一、基本结构化命令if-then语句格式:
bash shell的if语句会运行if后面的那个命令。如果该命令的退出状态码是0(该命令成功运行),位于then部分的命令就会被执行。如果该命令的退出状态码是其他值,then部分的命令就不会被执行。
fi语句用来表示if-then语句到此结束。
执行结果:
二、if-then-else语句
当if语句中的命令返回非零退出状态码时,会执行else部分中的命令。
else部分可以包含多条命令。
执行结果:
三、嵌套if
bash shell会依次执行if语句,只有第一个返回退出状态码0的语句中的then部分会被执行
四、test命令
if-then语句不能测试命令退出状态码之外的条件,test命令提供了在if-then语句中测试不同条件的途径。
如果test命令中列出的条件成立,test命令就会退出并返回状态码0。
test命令的格式非常简单:
condition是test命令要测试的一系列参数和值。当用在if-then语句中时,test命令看起来是这样的。
另一种写法:
第一个方括号和第二个方括号之前必须加上一个空格,否则会报错
test命令可以判断三类条件:
数值比较
字符串比较
文件比较
执行结果:
但是涉及到浮点值时,数值条件测试会有一个限制。bash shell只能处理整数。
记住,在比较字符串的相等性时,比较测试会将所有的标点和大小写情况都考虑在内。
-n和-z可以检查一个变量是否含有数据。
大于号和小于号必须转义,否则shell会把它们当作重定向符号,把字符串值当作文件名;
大于和小于顺序和sort命令所采用的不同。
执行结果:
sort test file
执行结果:(小到大排序)
五、复合条件测试
if-then语句允许使用布尔逻辑来组合测试。有两种布尔运算符可用:
1)[ condition1 ]&&[ condition1 ] 必须都满足
2)[ condition1 ] || [ condition1 ] 满足一种即可
执行结果:
六、if-then的高级特性
1)用于数学表达式的双括号 ((expression))
2)用于高级字符串处理功能的双方括号 [[ expression ]]
使用双括号
双括号的命令格式如下:
expression可以是任意的数学赋值或比较表达式。
2.特点:
(1)在双括号结构中,所有表达式可以像c语言一样,如:a++,b–等。
(2)在双括号结构中,所有变量可以不加入:“$”符号前缀。
(3)双括号可以进行逻辑运算,四则运算
(4)双括号结构 扩展了for,while,if条件测试运算
(5)支持多个表达式运算,各个表达式之间用“,”分开
(6)不需要将双括号中表达式里的判断符号转义
执行结果:
注意,引用变量可以加$符号也可以不加;
七、cae命令
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令
案例:
执行结果:
如果觉得《shell脚本:使用if-then语句和test命令》对你有帮助,请点赞、收藏,并留下你的观点哦!