2

谷歌搜索了一个小时左右,以获得对以下内容的简单解释。在什么时候:

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

... Bash 是否评估大括号的“..”组件?

谢谢,

扎克

4

2 回答 2

5

您可以set -x在自己的 shell 脚本中使用来查看它(调试 Bash 脚本

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
于 2012-08-18T19:12:23.367 回答
0

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

于 2012-08-18T19:09:11.223 回答