使用结构化命令

结构化命令(structured command):程序要求对shell脚本中的命令施加一些逻辑流程控制或根据条件使脚本跳过某些命令。比如if-then语法:
if command
then
           commands
fi
fi语句用来表示if-then语句到此结束。
在其他编程语言中,if语句后的对象是一个等式,该对象的值若为TRUE则执行接下来的命令,若为FALSE则不执行。
但bash shell的if语句会运行if后面的那个命令。如果该命令的退出状态码是0(即命令成功运行),则位于then后的命令就会被执行。
如果该命令的退出状态码是其他值,then后的命令就不会被执行,bash shell会跳过这个if-then语句,去执行脚本中后面的命令。

我们还可以加一个分号(;),相当于告诉系统这一行是有两个命令。然后就可以将then语句放在同一行上了
if command; then 
            commands
fi

if-then语句中,不管命令是否成功执行,你都只有一种选择。当命令返回一个非零退出状态码,if-then-else语句就能够执行else的命令。语法:
if command
then
         commands 
else 
         commands 
fi

可以使用else部分的另一种形式:elif。这样就不用再书写多个if-then语句了。elif使用另一个if-then语句延续else部分。语法:
if command1
then
          commands 
elif command2 
then
          commands
elif command3 
then
          commands
fi

if-then语句不能测试命令退出状态码之外的条件。而test命令提供了在if-then语句中测试不同条件的途径。
如果test命令中列出的条件成立,test命令就会退出并返回退出状态码0。这样if-then语句就与其他编程语言中的if-then语句以类似的方式工作了。
如果条件不成立,test命令就会退出并返回非零的退出状态码,这使得if-then语句不会再被执行。
两种语法格式:
if test condition                         if [condition] 
then                                          then 
                commands                                       commands
fi                                               fi
也可以使用方括号([])定义测试条件。注意,如果有多个测试条件,每个条件之间用空格分隔。

test命令可以判断三类条件:
1.数值比较
2.字符串比较
3.文件比较

判断数值比较:
•只能进行整数运算比较
•注意中括号([])前后一定要与里面的内容用空格隔开,否则无法运行!!!

字符串比较:
•字符串相等性:所有的标点和大小写情况都考虑在内
•字符串顺序:大于号和小于号必须转义;大小写字母排序与sort命令恰好相反
•字符串大小:-n和-z可以检查一个变量是否含有数据。

文件比较
测试Linux文件系统上文件和目录的状态。

布尔逻辑(boolean logic)是一种能够将可能的返回值简化为TRUE或FALSE的方法。 if-then语句允许你使用布尔逻辑来组合测试。有两种布尔运算符可用:
1.[ condition1 ] && [ condition2 ]    表示“与”,即既要满足condition1也要满足condition2时,才会返回TRUE值。否则返回FLASE值
2.[ condition1 ] || [ condition2 ]        表示“或”,即condition1和condition2只要满足其中一个时,就会返回TRUE值。都不满足则返回FLASE值。

双括号命令(( expression ))允许你在比较过程中使用高级数学表达式。test命令只能在比较中使用简单的算术操作。双括号命令提供了更多的数学符号,并且不需要将双括号中表达式里的大于号转义。
双方括号命令[[ expression ]]使用了test命令中采用的标准字符串比较,并且提供模式匹配
(pattern matching)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值