【shell】条件测试


通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作。执行条件测试通常会返回"真"或"假",类似执行命令,返回0是真,返回非0是假。

1.条件测试常用的方法

条件测试语法 说明
语法1:test <测试表达式> 利用test命令进行条,test后有一个空格
语法2:[ <测试表达式> ] 通过单中括号进行,单中括号中的内容前后都有一个空格
语法3:[[ <测试表达式> ]] 通过双中括号进行,双中括号中的内容前后都有一个空格
语法4:((<测试表达式>)) 通过双小括号进行,双小括号中的内容前后无空格

特别说明:

注意:推荐使用语法2
&&、||、>、<等操作符可以应用于[[]]中,但是在[]是不能使用,在[]中一般用-a、-o、-gt等替代

2.test条件测试的简单语句和实例

语法:test <测试表达式>

案例一:test命令

[qinys@localhost 20200313]$ test -f a.txt && echo true || echo false
false

语句中涉及的a.txt文件是不存在的,所以输出false,此处条件为真,则执行&&后的语句,条件为假,则执行||后的语句
上述逻辑是一个联合逻辑,也可以将上述逻辑拆分开,拆分如下:

[qinys@localhost 20200313]$ test -f a.txt && echo true
[qinys@localhost 20200313]$ test -f a.txt || echo false
false

案例二:test命令中使用-z选项
-z选项表示:如果测试字符串的长度为0,则表达式成立

[qinys@localhost 20200313]$ test -z "" && echo 1 || echo 0
1
[qinys@localhost 20200313]$ test -z "abc" && echo 1 || echo 0
0

3.[]条件测试语法及实例

语法:[ <测试表达式> ]

中括号内部的两端要有空格,[]与test等价,即test的所有判断选项都可以直接在[]里使用

以下是演示案例:使用[]实现条件测试

[qinys@localhost 20200313]$ [ -f a.txt ] && echo true || echo false
false

此处的条件测试同样可以拆分,拆分后为:

[qinys@localhost 20200313]$ [ -f a.txt ] && echo true 
[qinys@localhost 20200313]$ [ -f a.txt ] || echo false
false

4.[[]]条件测试语法及实例

语法:[[ <测试表达式> ]]

以下是演示案例:使用[[]]实现条件测试

[qinys@localhost 20200313]$ [[ -f a.txt ]] && echo true || echo false
false

此处的条件测试同样可以拆分,拆分后为:

[qinys@localhost 20200313]$ [[ -f a.txt ]] && echo true 
[qinys@localhost 20200313]$ [[ -f a.txt ]] || echo false
false
posted @ 2020-03-13 17:09  OLIVER_QIN  阅读(353)  评论(0编辑  收藏  举报