每个Shell支持各种运算符。我们将在本章中详细讨论Bourne shell(默认Shell)。

我们现在将讨论以下运算符-

  • 算术运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符

Bourne Shell最初没有任何执行简单算术运算的机制,但它使用外部程序,即 awk 或 expr 。

以下示例显示如何将两个数字相加-

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

上面的脚本将产生以下输出-

Total value : 4

算术运算符

Bourne Shell支持以下算术运算符。

假设变量 a=10,变量 b=20,然后-

操作符 描述 示例
+ 相加 `expr $a + $b`=30
- 相减 `expr $a - $b`=-10
相乘 `expr $a\* $b`=200
/ 相除 xpr $b/$a`=2
% 取模 `expr $b % $a`=0
= 赋值 a=$b  将 b 的值赋给 a
== 相等 [ $a == $b ] 将返回false
!= 不相等 [ $a != $b ]  将返回true

关系运算符

Bourne Shell支持以下特定于数值的关系运算符。这些运算符不适用于字符串值,除非它们的值是数字。

假设变量 a=10,变量 b=20,然后-

操作符 描述 示例
-eq 检查两个值是否相等 [$a -eq $b] =》 false
-ne 检查两个值是否不相等 [$a -ne $b] => true
-gt 检查左值是否大于右值 [$a -gt $b] => false
-lt 检查左值是否小于右值 [$a -lt $b] => true
-ge 检查左值是否大于或等于右值 [$a -ge $b] => false
-le 检查左值是否小于或等于右值 [$a -le $b] => true

布尔运算符

Bourne Shell支持以下布尔运算符。

假设变量 a =10,变量 b =20,然后-

操作符 描述 示例
! 逻辑 非 [!false] ==true 
-o 逻辑 OR [$a -lt 20 -o $b -gt 100] == true
-a 逻辑 AND [$a -lt 20 -a $b -gt 100] ==false

字符串运算符

Bourne Shell支持以下字符串运算符。

假设变量 a ="abc",变量 b="efg",则-

操作符 描述 示例
= 检查两个值是否相等 [$a=$b] ==false。
!= 检查两个值是否不相等 [$a!= $b] == true。
-z 检查给定的字符串操作数大小是否为零 [-z $a] == false。
-n 检查给定的字符串操作数大小是否为非零 [-n $a] == true。
str 检查 str 是否不是空字符串 [$a] == true。

文件测试

我们有一些运算符可用于测试与Unix文件相关的各种属性。

假设变量文件拥有一个现有文件名" test",其大小为100个字节,并且具有 read , write 和 execute 权限

操作符 描述 示例
-b file 检查文件是否为块特殊文件 [-b $file] => false
-c file 检查文件是否为字符特殊文件 [-c $file] => false
-d file 检查文件是否为目录 [-d $file] => false
-f file 检查文件是否是普通文件,而不是目录或特殊文件 [-f $file] => true
-g file 检查文件是否设置了其设置的组ID(SGID)位 [-g $file] => false
-k file 检查文件是否设置了Sticky bit set [-k $file] => false
-p file 检查文件是否为命名管道 [-p $file] => false
-t file 检查文件描述符是否打开并与终端关联 [-t $file] => false
-u file 检查文件是否设置了其设置用户ID(SUID)位 [-u $file] => false
-r file 检查文件是否可读 [-r $file] => true
-w file 检查文件是否可写 [-w $file] => true
-x file 检查文件是否可执行 [-x $file] => true
-s file 检查文件的大小是否大于0 [-s $file] => true
-e file 检查文件是否存在 [-e $file] => true

参考链接

https://www.learnfk.com/linux/linux-basic-operators.html