shell脚本的条件测试
1、test
格式:test <测试表达式>
[root@hxjk_test_backend_services test]# ls aa.sh bb.sh cc.sh [root@hxjk_test_backend_services test]# cat cc.sh test -f aa.sh && echo true || echo false test -f aaa.sh && echo true || echo false test -z "$1" && echo true || echo false [root@hxjk_test_backend_services test]# sh cc.sh true false true [root@hxjk_test_backend_services test]# sh cc.sh 123 true false false [root@hxjk_test_backend_services test]#
test -f : 测试文件存在且为普通文件
test -z : 测试字符串长度为0
test命令执行成功(为真)则执行&&后面的命令,失败(为假)执行||后面的命令。
2、[](中括号)
格式:[ <测试表达式> ],和test等价,即test的所有判断选项都可以直接在[]里使用。
[root@hxjk_test_backend_services test]# ls aa.sh bb.sh cc.sh dd.sh [root@hxjk_test_backend_services test]# cat dd.sh [ -f aa.sh ] && echo true || echo false [ -f aaa.sh ] && echo true || echo false [root@hxjk_test_backend_services test]# sh dd.sh true false [root@hxjk_test_backend_services test]#
3、[[]]
格式:[[ <测试表达式> ]],属于[]和test命令的扩展命令,功能更丰富也更复杂。
文件测试表达式
字符串测试表达式
常用字符串测试操作符
1. -n "字符串" : 若字符串的长度为0,则为真,即测试表达式成立,n可以理解为no zero.字符串一定要加双引号.
2. -z “字符串”: 若字符串的长度为0,则为震,即测试表达式成立,z可以理解为zero 的缩写.
3. "串1"="串2": 若字符串1等于字符串2,则为真,可使用"==" 代替"=". 比较符号两端一定要有空格.
4. "串1"!="串2": 不等于. 比较符号两端一定要有空格.
[root@hxjk_test_backend_services test]# cat ee.sh [ -n "$1" ] && echo 1 || echo 0 [ -n "$2" ] && echo 1 || echo 0 [root@hxjk_test_backend_services test]# sh ee.sh "123" "" 1 0 [root@hxjk_test_backend_services test]#
整数二元比较操作符