语法
条件测试语法 | 说明 |
---|---|
test <测试表达式> | test命令和< 测试表达式>之间至少有一个空格 |
[ <测试表达式> ] | 和test 表达式相同,[] 的边界和测试表达式至少有一个空格 |
[[<测试表达式>]] | 在[[]](双中括号)中可以使用通配符等进行模式匹配,这是其区别于其他几种语法格式的地方。&&、||、>、<等操作符可以应用于[[]]中,但不能应用于[]中,在[]中一般用-a、-o、-gt(用于整数)、-lt(用于整数)代替上述操作符。 |
((<测试表达式>)) | 一般用于if 语句里 |
test条件测试
语法
test <测试表达式>
如果字符串长度为0 表达式成立 ,否则不成立,&&是并且的意思,|| 表示不符合是输出
#! /bin/bash
char="hello"
test -z "${char}" && echo true || echo false
char=""
test -z "${char}" && echo true || echo false
判断文件是否存在
#! /bin/bash
echo "hello world" > hello.txt
test -f hello.txt && echo 0 || echo 1
rm hello.txt
test -f hello.txt && echo 0 || echo 1
中括号条件测试
语法
[ <测试表达式> ]
注意:中括号内部的两端要有空格,[]和test等价,即test的所有判断选项都可以直接在[]里使用。
如果双中括号里的表达式成立(为真),则执行&&后面的命令,否则执行||后面的命令。
#! /bin/bash
touch foo.txt
[ -f foo.txt ] && echo 0
[ -f bar.txt ]|| echo 1
打印结果
0
1
双中括号条件测试
语法
[[ <测试表达式> ]]
注意:双中括号里的两端也要有空格。
#! /bin/bash
touch foo.txt
[[ -f foo.txt ]] && echo 0
[[ -f bar.txt ]]|| echo 1
[[]]表达式与[]和test用法的选项部分是相同的,其与[]和test测试表达式的区别在于,在[[ ]]中可以使用通配符等进行模式匹配;并且&&、||、>、<等操作符可以应用于[[ ]]中,但不能应用于[ ]中,在[ ]中一般使用-a、-o、-gt(用于整数)、-lt(用于整数)等操作符代替上文提到的用于[[]]中的符号。