如果'var = 08',如何在bash中增加变量'var'

时间:2013-03-31 11:25:46

标签: bash variables increment

当我仅在变量值为 08或09

的情况下增加显示变量后的变量

a=08; ((a++)); echo "$a"

输出

~$ a=08;  ((a++));  echo "$a"
bash: ((: 08: value too great for base (error token is "08")
08

怎么了? 我想要结果09(不是9.我知道9可以通过bc <<< "08+01"

来实现

3 个答案:

答案 0 :(得分:9)

当你给一个带零的数字加前缀时,shell认为它是一个八进制号,而八进制数字只从0到7。

您可能希望保留不带前导零的数字,因此它是正常的十进制数,而只是在打印值时添加前导零。

a=8; ((a++)); printf "%02d\n" $a

答案 1 :(得分:1)

前导0的数字被解释为八进制

您可以使用单独的expr流程:echo $(expr "$a" + 1)

或者您可以直接使用bash特定构造强制基础10:echo $((10#$a+1))

或者您可以使用expr将var格式化为十进制一次a=$(expr "$a" + 0)

答案 2 :(得分:0)

当你在数字后面加零时,它被认为是八进制数,不存在09元素。

如果使用十进制编号,则删除数字声明0。

检查谷歌的八进制数字和bash以获得更多说明。