Shell:运算命令和操作符
let命令:
i1=2
i2=3
let res=i1+$i2 #‘=’和‘+’前后不能有空格,变量前可以加‘$’符号也可不加。
echo $res #5
#以下两种情况不常用
let res=1==3; echo $res #0
let res=1!=3; echo $res #1
支持自增自减操作:
#下面情况下变量前不能加‘$’符号,操作符前后也不能有空格。
let i1++
let --i2
let i2+=4
$[ ]操作符:
返回其包裹的表达式的运算结果
i1=2
i2=3
res=$[ i1+$i2 ] #变量前可以加‘$’符号也可不加,‘[’后和‘]’前必须要有空格,‘+’前后的空格随意
echo $res #5
$(())操作符:
同上
res=$(($i1+i2)) #变量前可以加‘$’符号也可不加,空格随意。
expr命令:
#变量前必须加‘$’符号,‘+’前后必须有空格
res=`expr $i2 + 3`
res=$(expr $i2 + 3)
1、之所以加``
或$()
操作符是因为expr 2 + 3
语句的执行后果是打印5,但是这个语句并不返回值5,``
或$()
操作符的作用就是将expr
语句的打印结果作为值返回。(详情参考博文:区分有效命令和表达式)
2、expr
命令中乘法要用\*
符号而不是*
符号:expr 4 \* 5
以上都只能进行整数运算。进行浮点数运算可以用bc
命令:
i=5.0
echo "$i*2" | bc # 引号不能省略,变量前必须加‘$’符号,空格随意。
echo "scale=2.0;$i/2" | bc # scale=2.0指定精度,否则会取整