bash shell的条件语句详解
~ script% touch if.sh ~ script% chmod 755 if.sh
1.if-then-fi
#!/usr/bin/env bash FOOD=$1 if [ $FOOD="apple" ] then echo The food is $FOOD fi exit 0
~ script % ./if.sh apple The food is apple
如果要将多条语句写在一行,可以分号分割开,如:
if [ $FOOD="apple" ];then
注意:
if [ 条件 ],中括号包住的条件与括号之间必须要有空格。if关键字与中括号之间也必须要有空格。为什么会这样, 因为命令与参数之间必须要用空格分开。[]中括号代表的量test这个命令,所以上面的if语句也可以写成:
if test $FOOD="apple"
then
echo The food is $FOOD
fi所以如果没有空格了,解析器就会找到一个错误或不存在的命令,因为它会把在每一行遇到的第一个空格前面有字符串的字符串当作是命令,之后的当作是参数。所以如果if和[]没有空格,执行脚本时就会报错,把if[ apple=apple ]都当作是命令了,而这实际上是一个不存在的命令:
~ script % ./if.sh apple ./if.sh: line 4: if[ apple=apple ]: command not found
温馨提示:赋值语句的等号左右不能有空格,否则会报错。
2.else子句
if.sh:
#!/usr/bin/env bash
NUM=$1
if [ $NUM -eq 10 ] # = 等价于-eq,后者只能用于数字的比较上,前者=,则在字符串和数字上都能用于相等的比较
then
echo it is 10
else
echo it is not 10
fi
exit 0~ script % ./if.sh 109 it is not 10
3.elif子句
#!/usr/bin/env bash
NUM=$1
if [ $NUM -eq 10 ] # = 等于-eq,后者只能用于数字的比较上,前者则都可以用在字符串和数字的相等比较上
then
echo equal 10
elif [ $NUM -lt 10 ]
then
echo less than 10
elif [ $NUM -le 11 ]
then
echo less than or equal 11
else
echo greater than 11
fi
exit 0~ script % ./if.sh 109 greater than 11
-eq:equal 等于-lt:less than 小于-gt:greater than 大于-le:less than or equal 小于或等于-ge:greater than or equal 大于或等于
为什么不可以用<,>等来表达上面这些关系,因为这些符号在类Unix系统中有特殊用途。
到此这篇关于bash shell的条件语句的文章就介绍到这了,更多相关bash shell条件语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
普通用户启动supervisor报HTTP错误(strace)解决分析
这篇文章主要为大家介绍了普通用户启动supervisor报HTTP错误strace的问题解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07
linux shell中curl 发送post请求json格式问题的处理方法
这篇文章主要介绍了linux shell中curl 发送post请求json格式问题的处理方法,文中给大家提到了linux中使用curl发送post请求问题,需要的朋友可以参考下2018-07-07


最新评论