今天寫腳本的時(shí)候遇到了一個(gè)十分惱人的bug,似乎也不算bug策严,但是以后寫腳本的時(shí)候一定要注意
在shell中使用雙括號(hào)進(jìn)行數(shù)學(xué)運(yùn)算:
echo $((17-16))
1
我在計(jì)算ms相減的時(shí)候顶燕,為了保持統(tǒng)一凑保,我將所有的數(shù)據(jù)都變成三位數(shù),也是可以計(jì)算的:
echo $((017-016))
1
但是意外發(fā)生了
echo $((018-017))
-bash: 018: value too great for base (error token is "018")
想著18也算大???明明和我一樣大
問了同事之后涌攻,猜測(cè)可能是shell提供的雙括號(hào)運(yùn)算功能將‘0’開頭的字符串轉(zhuǎn)換成立8進(jìn)制欧引,然后進(jìn)行運(yùn)算,例如:
shell確實(shí)是按照8進(jìn)制計(jì)算的恳谎,所以還是不要偷懶芝此,老老實(shí)實(shí)用
VAR=${VAR##0}
去掉開頭的‘0’再計(jì)算吧