本文是自己学习的总结,仅以作分享。若有不对的地方欢迎指正。
条件测试
在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果不同进行不同的操作,有时也会与if等条件语句相结合,让我们可以方便的完成判断。
语法说明
格式一:test 测试表达式
格式二: [ 测试表达式 ]
格式三: [[ 测试表达式 ]]
格式一和格式二是等价的,格式三是test的扩展命令。在[[ ]]、[ ]中可以使用通配符进行匹配,&&、||、>、<、等也可用于[[ ]]中,但不能用于[ ]中。
文件测试操作符
-f 文件:若文件存在且为普通文件则为真(f=file)
-d 文件:若文件存在且为目录文件则为真(d=dirctory)
-s 文件:若文件存在且不为空(文件大小为零)则为真(s=size)
-e 文件:若文件存在则为真(e=exist)
-r 文件:若文件存在且可读则为真(r=read)
-w 文件:若文件存在且可写则为真(w=write)
-x 文件:若文件存在且可执行则为真(x=executable)
-L 文件:若文件存在且为链接文件则为真
f1 –nt f2:若文件f1比文件f2新则为真(nt=newer than)
f1 –ot f2:若文件f1比文件f2旧则为真(ot=older than)
字符串测试操作符
比较两个字符串是否相同、字符串长度是否为零,字符串是否为NULL(bash区分零长度字符串和空字符串)等
-z “字符串”:若字符串长度为零则为真(z=zero)
-n “字符串”:若字符串长度不为零则为真(z=no zero)
“串1”=”串2”:若串1等于串2则为真,可用“==”代替“=”
“串1”!=”串2”:若串1不等于串2则为真
比较字符串长度是否相等:[ “${#字符串1}” = “${#字符串2}” ] && echo 1 || echo 0
整数二元比较操作符
逻辑操作符