今天我们来学习Shell的运算符和流程控制。
运算符
Shell和其他编程语言一样支持多种运算符,包括:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 字符串运算符
- 文件测试运算符
下面我们一起来看看。
算术运算符
原生bash不支持简单的数学运算,需要借助expr命令。
例如,输出两个数的和:
sum=`expr 1 1`
echo $sum
注意:
操作数和操作符之间必须用空格分开;
表达式必须使用反引号包裹;
操作符 | 说明 | 示例 |
---|---|---|
加法 | expr 1 1 | |
- | 减法 | expr 1 - 1 |
* | 乘法 | expr 1 \ 1 需要转义号 |
/ | 除法 | expr 1 / 1 |
% | 取余 | expr 2 % 2 |
完整示例如下:
a=1
b=2
# 加法
val=`expr $a $b`
echo "$a $b=$val"
# 减法
val=`expr $a - $b`
echo "$a-$b=$val"
# 乘法
val=`expr $a \* $b` # 必须转义
echo "$a*$b=$val"
# 除法
val=`expr $a / $b`
echo "$a/$b=$val"
# 取余
val=`expr $a % $b`
echo "$a%$b=$val"
关系运算符
关系运算符是比较两个操作数的数学大小关系,支持数字和数字字符串(如"1")
运算符 | 说明 |
例子 |
---|---|---|
-eq |
检测两数是否相等 |
[ `$a -eq $b` ] |
-ne |
检测两数是否不等 |
[ `$a -ne $b` ] |
-gt |
检查左边是否大于右边(greater than) | [ `$a -gt $b` ] |
-lt |
检查左边是否小于右边(less than) |
[ `$a -lt $b` ] |
-ge |
检查左边是否大于等于右边 |
[ `$a |