linux shell的if语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell的if语句相关的知识,希望对你有一定的参考价值。
现在我有一道编程题,写在shell里面,内容如下
当我运行该shell文件时,提示“你继续吗?Y or N”
等待我输入,当我输入Y或y时,输出“你选择了或y”,
当我输入N或n时,输出“你选择了N或n”,
当我输入其他的时候,输出 “输入错误”
使用if elif else语句
以下就是我编写的shell
echo "你继续吗?Y or N"
read ANSWER
if [ $ANSWER = 'Y' -o $ANSWER = 'y' ] ; then
echo "你选择了$ANSWER";
elif [ $ANSWER = 'N' -o $ANSWER = 'n' ] ; then
echo "你选择了$ANSWER";
else
echo "输入错误"
exit
fi
我运行该shell文件时,提示我需要输入,而我随便填写一个(Y、N、y、n、或其他)字母回车,输出的并不是我想要的,提示编码有问题,请问上面的代码错在哪里(还是用if elif else语句情况下),请给一个正确的我
第三行的 输出“你选择了或y”,改为 输出“你选择了Y或y”,
read ANSWER
if [ “$ANSWER” = “Y” -o “$ANSWER” = “y” ] ; then
echo "你选择了$ANSWER";
elif [ “$ANSWER” = “N” -o “$ANSWER” = “n” ] ; then
echo "你选择了$ANSWER";
else
echo "输入错误"
exit
fi
-----你试试 参考技术A #/bin/bash
read -p "你继续吗?Y or N:" ANSWER
if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ] ; then
echo "你选择了 $ANSWER"; #如果要显示为你选择了Y或y则改为 echo "你选择了Y或y"
elif [ "$ANSWER" = "N" -o "$ANSWER" = "n" ] ; then
echo "你选择了$ANSWER"; #如果要显示为你选择了N或n则改为 echo "你选择了N或n"
else
echo "输入错误"
exit
fi追问
这个我试过,还是出现错误
参考技术B 脚本没有问题,应该是你用的默认shell问题,用sh或bash运行一下试试,在脚本第一行加上#!/bin/sh追问
修改了还是一样
参考技术C read -p "你继续吗?(y/n):" ynif [ $yn == Y -o $yn == y ]; then
echo "你选择了$yn!"
elif [ $yn == N -o $yn == n ]; then
echo "你选择了$yn!"
else
echo "输入错误"
exit 1
fi
主要是注意一下read的用法
linux shell编程之if语句
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于
-z 空串
= 两个字符相等
!= 两个字符不相等
-n 非空串
字符串通常用来检查用户输入,系统环境是否满足条件,在提供交互式操作的shell脚本中也可以判断用户输入位置参数是否符合要求,字符串的常用操作如下:
文档比较运算符:
-e filename 假如filenanme存在,则为真
-d filename 假如filename为目录,则为真
-f filename 假如filename为常规文档,则为真
-L filename 假如filename为符号链接,则为真
-r filename 假如filename可读,则为真
-w filename 假如filename可写,则为真
-x filename 假如filename可执行,则为真
if 语句是循环语句中一种又称为控制语句,通过制定条件进行判断执行,只有条件成立的时候才会执行相应的代码,否则不会执行任何操作。
*单分支if语句格式:
if 条件测试操作
then
命令序列
fi
例子1
vim a.txt
#!/bin/bash
if
[ ! -d /media/cdrom ]
thenk
mkdir -p /media/cdrom
fi
wq!
sh -x a.txt x选项为查看调试过程
例子2
vim b.txt
#!/bin/bash
NUM=100
if (($NUM > 4));then
echo "this num is $NUM greater 4!"
fi
wq!
sh -x b.txt
*双分支if语句格式:
双分支的选择结果,要求针对条件成立,条件不成立两种情况分别执行不同的操作
语法结构
if 条件测试操作
then ( 条件成立执行)
命令序列1
else(否则,条件不成立,则执行)
命令序列2
fi
例子3
vim c.txt
#!/bin/bash
ping -c 3 -i 0.2 -w 3 $1
if
[ $? -eq 0 ]
then
echo "ip is up"
else
echo "ip is down"
fi
sh -x c.txt 172.0.0.1
例子4
vim b.txt
#!/bin/bash
word=$1
grep ^$1$" /usr/share/dict/words -q
if [ $? -eq 0 ];then
echo "word is a dictionary word"
else
echo "word is not a dictionary word"
fi
本文出自 “Oracle个人学习笔记” 博客,请务必保留此出处http://wuchunqiang.blog.51cto.com/1022331/1853496
以上是关于linux shell的if语句的主要内容,如果未能解决你的问题,请参考以下文章