奇怪的破折号算术

时间:2014-10-13 15:25:39

标签: bash sh dash-shell

拥有以下内容:

#!/usr/bin/env dash
seq -w 10 | while read -r num
do
    echo $num: $((num + 1))
done

打印

01: 2
02: 3
03: 4
04: 5
05: 6
06: 7
07: 8
sd: 3: sd: Illegal number: 08

有人可以解释上面dash artihmetic的问题是什么吗?

请注意,它是破折号(非bash)脚本。

也将其标记为bash,以获得bash专家的更多关注。 :)

1 个答案:

答案 0 :(得分:5)

问题导致0输出seq使其八进制数字,07以上的任何数字都是无效的八进制数。

请注意,此脚本可以正常运行而不会出现错误:

seq 10 | while read -r num; do echo "$num: $((num + 1))"; done