1 最简单的例子
#!/bin/bash
if [ 10 -lt 20 ]
then
echo "aaa"
else
echo "bbb"
fi
运行结果:
aaa
-lt 是 less than的缩写。
2 shell script 中 if...else 的语法
if 某一判断条件
then
...
elif 另一判断条件
then
...
else
...
fi
再看一个稍微复杂一点的例子:
#!/bin/bash
echo "Please enter your age:"
read age
if [ -z "$age" ]
then
echo "Sorry, you didn't input."
elif [ "$age" -lt 20 ] || [ "$age" -ge 50 ]
then
echo "Sorry, you are out of the age range."
elif [ "$age" -ge 20 ] && [ "$age" -lt 30 ]
then
echo "You are in your 20s"
elif [ "$age" -ge 30 ] && [ "$age" -lt 40 ]
then
echo "You are in your 30s"
elif [ "$age" -ge 40 ] && [ "$age" -lt 50 ]
then
echo "You are in your 40s"
else
echo "Sorry, please input a number."
fi
运行:
Please enter your age:
43
You are in your 40s
3 判断条件的写法
常用的判断条件有两种写法:
test 描述条件的表达式
or
[ 描述条件的表达式 ]
所以:
if [ -z "$age" ]
等于
if test -z "$age"
-z string
用于判断一个字符串的长度是否为0。
当我们想知道一个判断中的关键字,如 -z
, -lt
或 -n
的含义时,我们可以使用命令:
man test
...
-n STRING
the length of STRING is nonzero
-z STRING
the length of STRING is zero
...
如果我们想把 if 和 then 写在一行中,还可以这样写:
if [ -z "$age" ]
then
等于
if [ -z "$age" ]; then
最后,在Bash, Zsh and the Korn shell中,引入了一个功能更强大的关键字 [[ ]]
, 用来取代 [ ]
。如果感兴趣,可以看这里:http://mywiki.wooledge.org/BashFAQ/031
还有一种写法:
# false && echo foo || echo bar
bar
# true || echo foo && echo bar
bar
其中&&
为真时执行,||
为假时执行。