失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > shell脚本:使用if-then语句和test命令

shell脚本:使用if-then语句和test命令

时间:2022-06-11 10:28:18

相关推荐

shell脚本:使用if-then语句和test命令

一、基本结构化命令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命令》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。