[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

-z  判断字符串是否为空,若为空则为真
-n  判断字符串是否为不空,若为不空则为真
 

文件测试

文件类型判断:
-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


 



原文地址:https://www.cnblogs.com/snsdzjlz320/p/5707638.html