在 Shell 脚本中,算术运算和其他语言比较相对复杂,可以通过两种方式进行算术运算。
-
可以通过 expr 命令进行算术运算并返回结果,命令格式如下。
expr 5 + 5 expr 5 – 5 expr 5 / 5 expr 5 \* 5
-
控制台显示:
10 0 1 25
-
-
可以通过反引号将结果保存到变量中,在脚本中就可以引用变量了,如下所示:
-
例:使用返引号或$()方式
var1=`expr 5 + 5` var2=`expr 5 - 5` var3=`expr 5 / 5` var4=`expr 5 \* 5` echo "$var1" echo $var2 echo ${var3} echo $var4 v=$(expr 20 + 2) v=$(expr 20 - 2) v=$(expr 20 / 2) v=$(expr 20 \* 2) echo $var1 echo $var2 echo $var3 echo $var4
-
expr 命令支持的运算符说明:
操作符 说明 OP1 + OP2 返回算术运算和 OP1 - OP2 返回算术运算差 OP1 \* OP2 返回算术运算乘积 OP1 / OP2 返回算术运算商 OP1 % OP2 返回算术运算余数 OP1 > OP2 如果 OP1 大于 OP2,返回 1,否则返回 0 OP1 >= OP2 如果 OP1 大于等于 OP2,返回 1,否则返回 0 OP1 < OP2 如果 OP1 小于 OP2,返回 1,否则返回 0 OP1 <= OP2 如果 OP1 小于等于 OP2,返回 1,否则返回 0 OP1 != OP2 如果 OP1 不等于 OP2,返回 1,否则返回 0 OP1 = OP2 如果 OP1 等于 OP2,返回 1,否则返回 0 substr string pos length 返回 string 的从 pos 开始 length 长度的字符串 index string chars 返回 chars 在 string 中的开始位置,没有返回 0 length string 返回字符串的长度
-
注意:大于号和小于号需要转义,如下所示:
expr 5 \> 5 expr 5 \>= 5 expr 5 \< 5 expr 5 \<= 5 expr 5 != 5 expr 5 = 5
-
几个常用的字符串操作,如下所示:
expr substr abcdefg 2 3 # bcd expr index abcdefg cd # 3 expr length abcdefg # 7
-
控制台输出:
bcd 3 7
-
-
-
另一种方式是采用方括号进行算术运算,如$[算术表达式],通常的方式将结果值赋给一 个变量,使用方式如下。
-
使用方括号进行算术运算: 例子:
#!/bin/bash var1=$[ 5 + 5 ] var2=$[ 5 - 5 ] var3=$[ 5 * 5 ] var4=$[ 5 / 5 ] var5=$[ 5 % 5 ] var6=$[ 5 + ( 5 * 5 )] echo "var1: $var1" echo "var2: $var2" echo "var3: $var3" echo "var4: $var4" echo "var5: $var5" echo "var6: $var6"
-
控制台输出:
var1: 10 var2: 0 var3: 25 var4: 1 var5: 0 var6: 30
-
注意:Bash Shell 只支持整数运算,不支持小数运算。
-