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 运算符的使用:
#!/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
以上代码分别演示了算术运算符、关系运算符、逻辑运算符和字符串运算符的使用。