Bash中执行算术运算有很多种实现方式,下面总结如下:
- Bash内建的let命令
let varName=expr 举例:
n1=3 n2=4 let sum=n1+n2 n3=2 n4=10 n5=5 let n1++ let n2+=4 let sum=\(\(n1+n2\)*n5\)*(n4-n3)表达式中有括号的,要对括号进行转义,尤其是表达式中运算操作符右边的括号!
- $[expr]
varName=$[expr] 举例:
n1=3 n2=4 sum=$[n1+n2] n3=2 n4=10 n5=5 sum=$[((n1+n2)*n5)*(n4-n3)]
- $((expr))
varName=$((expr)) 举例:
n1=3 n2=4 sum=$((n1+n2)) n3=2 n4=10 n5=5 sum=$((((n1+n2)*n5)*(n4-n3)))
- expr命令
expr EXPRESSION ,其中EXPRESSION可以是 n1 + n2, n1 – n2, n1 > n2, n1 = n2等等,详细信息可以man expr命令。特别注意的是EXPRESSION中各运算参数和运算操作符之间都要有空格隔开,而且运算参数以值引用的方式出现。例:
n1=3 n2=4 sum=`expr n1 + n2`另外,expr命令在算术运算方面似乎不支持使用括号的复杂的算术表达式,只支持二元运算.
- ((expr))
举例:
n1=3 n2=4 ((sum=n1+n2)) n3=2 n4=10 n5=5 ((sum=((n1+n2)*n5)*(n4-n3)))
以上算术运算中,对运算表达式中的变量参数,可以直接使用变量参数,也可以以引用的方式,即 var 等同于 $var。赋值表达式中的被赋值变量除外。例:
let sum=num1+num2 等同于 let sum=$num1+$num2
sum=$[num1+num2] 等同于 sum=$[$num1+$num2]
sum=$((num1+num2)) 等同于 sum=$(($num1+$num2))
((sum=num1+num2)) 等同于 ((sum=$num1+$num2))
另外,以上所有算术运算实现方式,都不支持浮点精度运算,只支持整型运算。
时间: 2024-10-10 14:34:49