Shell 基本运算符


Shell 基本运算符


算数运算符

运算符 说明 举例
+ 加法 `expr $a + $b`
- 减法 `expr $a - $b`
* 乘法 `expr $a * $b`
/ 除法 `expr $a / $b`
% 取余 `expr $a % $b`
= 赋值 $a = $b
== 相等 [ expr $a == $b ]
!= 不相等 [ expr $a != $b ]

关系运算符

运算符 说明 举例
-eq 两个数是否相等,相等返回true [ $a -eq $b ]
-ne 两个数是否不等,不等返回true [ $a -ne $b]
-gt 左边的数是否大于右边的数,是,返回true [ $a -gt $b]
-lt 左边的数是否小于右边的数,是,返回true [$a -lt $b]
-ge 左边的数是否大于等于右边的数,是,返回true [ $a >= $b ]
-le 左边的数是否小于等于右边的数,是,返回true [ $a <= $b ]

布尔运算符

运算符 说明 举例
! 非运算 [ !false]
-a 与运算 [$a -lt 20 -a $b -gt 100 ]
-o 或运算 [$a -lt 20 -o $b -gt 100 ]

逻辑运算符

运算符 说明 举例
&& 逻辑的AND [[ $a -lt 100 && $b -gt 100 ]]
|| 逻辑的OR [$a -lt 100 || $b -gt 100]

字符串运算符

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

文件测试运算符

运算符 说明 举例
-b file 检测文件是否是块设备文件,是返回true [ -b $file ]
-c file 检测文件是否是字符设备文件,是返回true [ -c $file ]
-d file 检测文件是否是目录,是返回true, 返回true [ -d $file ]
-f file 检测文件是否是普通文件,是返回true [ -f $file ]
-g file 检测文件是否设置SGID位,是返回true [ -g $file ]
-k file 检测文件是否设置粘着位(Sticky Bit)位,是返回true [ -k $file ]
-p file 检测文件是否是有名管道,是返回true [ -p $file ]
-u file 检测文件是否设置SUID位,是返回true [ -u $file ]
-r file 检测文件是否可读, 是返回true [ -r $file ]
-w file 检测文件是否可写, 是返回true [ -w $file ]
-x file 检测文件是否可执行, 是返回true [ -x $file ]
-s file 检测文件是否为空(文件大小是否大于0), 不为空返回true [ -s $file ]
-e file 检测文件是否存在, 存在返回true [ -e $file ]
-S file 检测文件是否是socket, 是返回true [ -S $file ]
-L file 检测文件是否存在且是符号连接, 是返回true [ -L $file ]