使用let、(())或[]进行基本的整数运算,使用expr和bc进行高级的运算,包括小数运算。
[[email protected] tmp]# str=10 [[email protected] tmp]# let str=str+6 [[email protected] tmp]# let str-=5 [[email protected] tmp]# echo $str
11
还可以自增、自减运算。
[[email protected] tmp]# let str++;echo $str
12
[[email protected] tmp]# let ++str;echo $str
13
[[email protected] tmp]# let str--;echo $str
12
[[email protected] tmp]# let --str;echo $str
11
如果要让运算处于命令之中,即不需要额外的赋值行为,可以使用$(())。
[[email protected] tmp]# echo $((str++))
12
[[email protected] tmp]# echo $((str--)) #从这个结果中是否发现了问题?
13
[[email protected] tmp]# echo $((str--))
12
[[email protected] tmp]# echo $((str++)) #还有这个结果
11
[[email protected] tmp]# echo $((str++))
12
不知道是我计算不来,还是$(())的问题,如果是$(())后缀自加(i++)和后缀自减(i--),则在后缀自增后再后缀自减将再执行一次自增行为,反之自减到自增也是。
但是使用$(())计算前缀自增和自减变换时没问题,let自增自减也都没有问题。
[[email protected] tmp]# echo $((--str))
12
[[email protected] tmp]# echo $((--str))
11
[[email protected] tmp]# echo $((++str)) #结果正常
12
[[email protected] tmp]# echo $((++str))
13
[[email protected] tmp]# echo $((--str))
12
使用[]也可以。
[[email protected] tmp]# echo $[str=$str+6] #在[]中使用了变量符号$
18
[[email protected] tmp]# echo $[str=str+6] #[]中没有使用$符号
24
但是如果$[$str=str+6]或$[$str=$str+6]将出错。
[[email protected] tmp]# echo $[$str=str+6]
-bash: 24=str+6: attempted assignment to non-variable (error token is "=str+6")
[[email protected] tmp]# echo $[$str=$str+6]
-bash: 24=24+6: attempted assignment to non-variable (error token is "=24+6")
总结下变量的运算方法:
[[email protected] tmp]# i=10 [[email protected] tmp]# let i=i-1 [[email protected] tmp]# let i-=1 [[email protected] tmp]# i=$((i-1)) [[email protected] tmp]# i=$[ i - 1 ] #中括号隔壁必须写空格 [[email protected] tmp]# i=$[ $i - 1 ]
时间: 2024-10-09 17:48:05