Shell 运算符学习笔记

在 Shell 编程中,我们经常使用各种运算符来进行数值计算、比较、逻辑运算等操作。下面是一些常用的 Shell 运算符及其用法:

算术运算符

运算符 描述 举例
+ 加法 expr $a + $b,其中 $a$b 是要相加的两个变量
- 减法 expr $a - $b,其中 $a$b 是要相减的两个变量
* 乘法 expr $a \* $b,其中 $a$b 是要相乘的两个变量,注意要对 * 进行转义
/ 除法 expr $a / $b,其中 $a$b 是要相除的两个变量
% 取余 expr $a % $b,其中 $a$b 是要取余的两个变量

关系运算符

运算符 描述 举例
-eq 判断两个变量是否相等 [ $a -eq $b ],返回值为真则表示两个变量相等
-ne 判断两个变量是否不相等 [ $a -ne $b ],返回值为真则表示两个变量不相等
-gt 判断一个变量是否大于另一个变量 [ $a -gt $b ],返回值为真则表示 $a 大于 $b
-lt 判断一个变量是否小于另一个变量 [ $a -lt $b ],返回值为真则表示 $a 小于 $b
-ge 判断一个变量是否大于等于另一个变量 [ $a -ge $b ],返回值为真则表示 $a 大于等于 $b
-le 判断一个变量是否小于等于另一个变量 [ $a -le $b ],返回值为真则表示 $a 小于等于 $b

逻辑运算符

运算符 描述 举例
&& 逻辑与 [ $a -eq 1 ] && [ $b -eq 2 ],如果 $a 等于 1 并且 $b 等于 2,则为真
|| 逻辑或 [ $a -eq 1 ] || [ $b -eq 2 ],如果 $a 等于 1 或者 $b 等于 2,则为真
! 逻辑非 ! [ $a -eq 1 ],如果 $a 不等于 1,则为真

字符串运算符

运算符 描述 举例
= 判断两个字符串是否相等 if [ "$a" = "$b" ],如果 $a$b 相等,则为真
!= 判断两个字符串是否不相等 if [ "$a" != "$b" ],如果 $a$b 不相等,则为真
-z 判断一个字符串是否为空 if [ -z "$a" ],如果 $a 为空,则为真
-n 判断一个字符串是否非空 if [ -n "$a" ],如果 $a 非空,则为真
str 判断一个字符串是否非空 if [ "$a" ],如果 $a 非空,则为真

实例

下面是一些示例代码,演示了 Shell 运算符的使用:

bashCopy Code
#!/bin/bash a=10 b=20 echo "a + b = `expr $a + $b`" echo "a - b = `expr $a - $b`" echo "a * b = `expr $a \* $b`" echo "a / b = `expr $a / $b`" echo "a % b = `expr $a % $b`" if [ $a -eq $b ] then echo "$a 等于 $b" else echo "$a 不等于 $b" fi if [ $a -ne $b ] then echo "$a 不等于 $b" else echo "$a 等于 $b" fi if [ $a -gt $b ] then echo "$a 大于 $b" else echo "$a 不大于 $b" fi if [ $a -lt $b ] then echo "$a 小于 $b" else echo "$a 不小于 $b" fi if [ $a -ge $b ] then echo "$a 大于等于 $b" else echo "$a 小于 $b" fi if [ $a -le $b ] then echo "$a 小于等于 $b" else echo "$a 大于 $b" fi if [ $a -eq 10 -o $b -eq 20 ] then echo "Either a or b is true" else echo "Neither a nor b is true" fi if [ $a -ne 10 -a $b -ne 20 ] then echo "Both a and b are not true" else echo "Either a or b is true" fi str="" if [ -z "$str" ] then echo "String is empty" else echo "String is not empty" fi str="Shell" if [ -n "$str" ] then echo "String is not empty" else echo "String is empty" fi str="Shell" if [ "$str" ] then echo "String is not empty" else echo "String is empty" fi

以上代码分别演示了算术运算符、关系运算符、逻辑运算符和字符串运算符的使用。