结构化命令允许改变程序执行的顺序,if-then和case。
if-then语句
if command
then
commands
fi
if-then语句,if里面的命令执行成功(退出状态码是0),执行then部分的命令;如果退出状态码不为0,则执行其他值。
if command
then
commands
else
commands
fi
if-then-else语句, if里面的命令执行成功(退出状态码是0),执行then部分的命令;如果退出状态码不为0,则执行else部分的命令。
嵌套if语句
在else语句里面添加if-then语句,也可以使用else的有另一种方式elif,这样就不需要写多个if-then语句,每块命令是根据是否返回退出状态码0来执行,语句格式是:
if command
then
commands
elif command
then
commands
else
commands
fi
test命令
if-then语句不能测试命令退出状态之外的条件。
if test conditon
then
connamds
fi
test命令列出的条件成立,test命令就会退出并返回退出状态码0。如果不写test,后面的条件将会以非零状态退出。bash可以定义另一种测试条件,方括号。test可判断三种条件:数值比较、字符串比较、文件比较。
数值比较: [ n1 -eq n2 ]是否相等 , [ n1 -ge n2 ]是否大于等于 , [ n1 -gt n2 ]是否大于, [ n1 -le n2 ]是否小于等于, [ n1 -lt n2 ]是否小于, [ n1 -ne n2 ]是否不等于 。
字符串比较: [ n1 = n2 ]是否相等, [ n1 != n2 ]是否不相等, [ n1 \< n2 ]小于 ,[ n1 \> n2 ]大于,[ -n str ]长度是否非零,[ -z str ]长度是否为零 。大小于是需要转义的,否则会被当做重定向符号。
文件比较:[ -d file ]是否存在并是一个目录,[ -e file ]文件是否存在 …… [ -r file ]检查文件可读。
复合条件:
&&与计算
||或计算
case命令:
if-then-else会写出很长的语句,case命令会用列表格式来检查单个变量的多个值。
case variable in
pattern1 | patter2) command1;;
pattern3) command2;;
*) default commands;;
esac
网友评论