用Google搜索了一个小时左右,以便对以下内容进行简单的解释。在以下几点:
for i in $(eval echo "{01..30}"); do
echo $i
done
... Bash会评估大括号的“..”组件吗?
谢谢,
扎克
答案 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
评估由这两个字符串形成的语句时,会发生大括号扩展。