Bash:支持扩展优先级和循环范围

时间:2012-08-18 19:00:21

标签: bash shell operators operator-precedence

用Google搜索了一个小时左右,以便对以下内容进行简单的解释。在以下几点:

for i in $(eval echo "{01..30}"); do
    echo $i
done

... Bash会评估大括号的“..”组件吗?

谢谢,

扎克

2 个答案:

答案 0 :(得分:5)

您可以在shell脚本中使用set -x自行查看(Debugging Bash scripts

set -x
for i in $(eval echo "{01..30}"); do
    echo $i
done

这是输出:

++ eval echo '{01..30}'
+++ echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
+ for i in '$(eval echo "{01..30}")'
+ echo 1
1
+ for i in '$(eval echo "{01..30}")'
+ echo 2
2

答案 1 :(得分:0)

要回答您的问题,eval命令会显示两个参数:字符串" echo"和字符串" {01..30}"。当eval评估由这两个字符串形成的语句时,会发生大括号扩展。