[shell基础]——整数比较;字符串比较;文件测试;逻辑测试符
整数比较
方法一:[ ] 或 [[ ]]
(1) 此方法需要使用整数比较运算符。[标注:equal 等于 greater 大于 less-then 小于]
(2) 使用时一定要注意前后一定要有的空格:[ num1 -eq num2 ] [[ num1 -eq num2 ]]
方法二:(( ))
(1) 此方法使用的是类似数学运算比较的运算符:== >= <= !=
# a=2;b=3 # [ $a -eq $b ];echo $? 1 # [ $a -lt $b ];echo $? 0 # (($a==$b));echo $? 1 # (($a<=$b));echo $? 0 # (($a!=$b));echo $? 0 # ((10-2==8));echo $? 0 # ((10-2!=8));echo $? 1
字符串比较
方法一:[ ] 或 [[ ]]
(1) 使用的比较运算符是:= !=
(2) 如果要使用通配符,要用[[ ]]
(3) 写的时候一定要注意等号两边都要有空格
# string0="";string1="abc" ===判断字符串是否为空=== # [ -z $string0 ];echo $? 0 # [ -z $string1 ];echo $? 1 # [ $string1 = "abc" ];echo $? 0 # [ $string1 != "abc" ];echo $? 1 # [[ $string1 = ??? ]];echo $? 0 # [[ $string1 = a* ]];echo $? 0
方法二:test
文件测试
文件类型判断:
-e 测试目录或文件是否存在(exist)
-f 测试该文件名是否存在且为文件(file)
-d 测试该文件名是否存在且为目录(directory)
-L 测试该文件名是否存在且为链接文件(Link)
-b 测试该文件名是否存在且为块设备(block)
-c 测试该文件名是否存在且为字符设备
-p 测试该文件名是否存在且为管道文件
文件权限判断:
-s 测试文件是否存在且内容非空(应当注意有1个空格也是非空)
-r 测试当前用户是否有可读权限
-w 测试当前用户是否有可写权限
-x 测试当前用户是否有可执行权限
-u 测试文件名是否存在并且具有SUID属性
-g 测试文件名是否存在并且具有SGID属性
-k 测试文件名是否存在并且具有Sticky属性
逻辑操作符
-a 逻辑与:操作符两边均为真,结果为真,否则为假。
-o 逻辑或:操作符两边一边为真,结果为真,否则为假。
! 逻辑否:条件为假,结果为真.
测试判断常配合if/else语句使用,看看写法: if [ -w file1 -a -w file2 ] if [ $? -eq 0 ] then echo "file1 file2 have write permisson" else echo "file1 file2 have not w permisson" fi if [ -d /tmp/dir1 ] then echo "the dir1 is existed" else echo "the dir1 is not existed" mkdir /tmp/dir1 fi