首页 > 代码库 > SHELL脚本攻略(学习笔记)--1.5 进行数学运算
SHELL脚本攻略(学习笔记)--1.5 进行数学运算
使用let、(())或[]进行基本的整数运算,使用expr和bc进行高级的运算,包括小数运算。
[root@xuexi tmp]# str=10[root@xuexi tmp]# let str=str+6[root@xuexi tmp]# let str-=5[root@xuexi tmp]# echo $str
11
还可以自增、自减运算。
[root@xuexi tmp]# let str++;echo $str
12
[root@xuexi tmp]# let ++str;echo $str
13
[root@xuexi tmp]# let str--;echo $str
12
[root@xuexi tmp]# let --str;echo $str
11
如果要让运算处于命令之中,即不需要额外的赋值行为,可以使用$(())。
[root@xuexi tmp]# echo $((str++))
12
[root@xuexi tmp]# echo $((str--)) #从这个结果中是否发现了问题?
13
[root@xuexi tmp]# echo $((str--))
12
[root@xuexi tmp]# echo $((str++)) #还有这个结果
11
[root@xuexi tmp]# echo $((str++))
12
不知道是我计算不来,还是$(())的问题,如果是$(())后缀自加(i++)和后缀自减(i--),则在后缀自增后再后缀自减将再执行一次自增行为,反之自减到自增也是。
但是使用$(())计算前缀自增和自减变换时没问题,let自增自减也都没有问题。
[root@xuexi tmp]# echo $((--str))
12
[root@xuexi tmp]# echo $((--str))
11
[root@xuexi tmp]# echo $((++str)) #结果正常
12
[root@xuexi tmp]# echo $((++str))
13
[root@xuexi tmp]# echo $((--str))
12
使用[]也可以。
[root@xuexi tmp]# echo $[str=$str+6] #在[]中使用了变量符号$
18
[root@xuexi tmp]# echo $[str=str+6] #[]中没有使用$符号
24
但是如果$[$str=str+6]或$[$str=$str+6]将出错。
[root@xuexi tmp]# echo $[$str=str+6]
-bash: 24=str+6: attempted assignment to non-variable (error token is "=str+6")
[root@xuexi tmp]# echo $[$str=$str+6]
-bash: 24=24+6: attempted assignment to non-variable (error token is "=24+6")
总结下变量的运算方法:
[root@xuexi tmp]# i=10[root@xuexi tmp]# let i=i-1[root@xuexi tmp]# let i-=1[root@xuexi tmp]# i=$((i-1))[root@xuexi tmp]# i=$[ i - 1 ] #中括号隔壁必须写空格[root@xuexi tmp]# i=$[ $i - 1 ]
SHELL脚本攻略(学习笔记)--1.5 进行数学运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。