Shell中的运算符与文件检测

2021-08-10 LinuxShell脚本

# 算术运算符

  1. 利用 let 对数值进行运算,let C=$A+$Blet 运算后需要将其赋值给一个变量。
  2. 利用 expr 对数组进行运算,C=$(expr $A+$B)
  3. 利用 [] 来对数值进行运算,C=[A+B]
  4. 利用 (()) 来对数值进行运算,C=$(($A+$B))

# 逻辑运算符

比较符 描述 示例
-eq,equal 等于 [1 -eq 1] 为 true
-ne,not equal 不等于 [1 -ne 1] 为 false
-gt,greater than 大于 [2 -gt 1] 为 true
-lt,lesser than 小于 [2 -lt 1] 为 false
-ge,greater or equal 大于或等于 [2 -ge 1] 为 true
-le,lesser or equal 小于或等于 [2 -le 1] 为 false

# 布尔运算符

运算符 说明 举例
-a 与运算,两个表达式都为 true 才返回 true。 [1 -lt 2 -a 10 -gt 2] 返回 true。
-o 或运算,有一个表达式为 true 则返回 true。 [1 -lt 2 -o 2 -gt 10] 返回 true。
! 非运算,表达式为 true 则返回 false,否则返回 true。 [! false] 返回 true。

# 逻辑运算符

运算符 说明 举例
&& 逻辑的 AND [[ $A -lt 10 && $B -gt 100 ]] 返回 false
\ \
! 非运算,表达式为 true 则返回 false,否则返回 true。 [! false] 返回 true。

# 字符串运算符

运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true。 [$a = $b] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [$a != $b] 返回 true。
-z 检测字符串长度是否为 0,为 0 返回 true。 [-z $a] 返回 false。
-n 检测字符串长度是否为 0,不为 0 返回 true。 [-n “$a” ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [$a] 返回 true。

# 文件测试运算符

操作符 说明 举例
-d file 检测文件是否是目录,如果是,则返回 true。 [-d $file] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [-f $file] 返回 true。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [-c $file] 返回 false。
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [-b $file] 返回 false。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [-g $file] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [-u $file] 返回 false。
-k file 检测文件是否设置了粘着位 (Sticky Bit),如果是,则返回 true。 [-k $file] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [-p $file] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [-r $file] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [-w $file] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [-x $file] 返回 true。
-s file 检测文件是否为空(文件大小是否大于 0),不为空返回 true。 [-s $file] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [-e $file] 返回 true。
上次更新: 2 年前