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