源作者:码享客
初一运算程序输入的数学题
数学上的加减乘除运算,在shell脚本中也能运行,shell一共提供三个方法来执行数学运算,分别是expr
,方括号模式
和双括号模式
。
expr命令
例如输入命令:
expr 2 - 5
输出结果为:
-3
注意,上面的减号左右都有空格
,没有的话会报错的。
但是expr
有一个缺点
导致它并不常用,expr不会自动去转义一些特殊的符号,比如乘法符号*
,输入:
expr 3 * 5
输出:
expr: 语法错误
加上反斜线,可以解决这个问题,输入:
expr 3 \* 5
输出结果为:
15
方括号
通过美元符号加中括号,
把数学表达书框起来的形式,也能够完成数学运算,并且这种方式不需要转义
,使用更加方便,建议以后使用这个方式,例如输入:
#!/bin/bash
var1=3
var2=$[3 + 3]
var3=$[$var1 + $var2]
初一运算程序输入的数学题有哪些var4=$[$var3 * 2]
var5=$[2 * ($var3 - $var4)]
echo "var1=$var1,var2=$var2,var3=$var3,var4=$var4,var5=$var5"
var6=$[100 / 30]
echo "var6=$var6"
输出:
var1=3,var2=6,var3=9,var4=18,var5=-18
var6=3
可以看出,var1~var5都计算没问题,但是var6结果并不精确。这是因为shell只能支持整数运算
。如果想要在shell中使用小数运算的话可以使用bc命令
。
用方括号的方式还有一个好处,就是在加减乘除符号左右两侧留不留空格,都能正常执行。
双括号
这种方式最好用,也不用考虑多加个空格的问题,比如把上面的脚本改为:
#!/bin/bash
var1=3
var2=$((3 + 3))
var3=$(($var1 + $var2))
var4=$(($var3 * 2))
var5=$((2 * ($var3 - $var4)))
echo "var1=$var1,var2=$var2,var3=$var3,var4=$var4,var5=$var5"
var6=$((100 / 30))
echo "var6=$var6"
输出结果为:
var1=3,var2=6,var3=9,var4=18,var5=-18
var6=3