如何在{a..z}范围构造中使用变量?

时间:2014-09-09 23:35:20

标签: bash loops variables

我正在尝试做一个类似于这个基本循环的循环:

storage-33:~#  echo {a..z}           
a b c d e f g h i j k l m n o p q r s t u v w x y z

但是我在我的脚本上设置了两个变量$ first_sd和$ last_sd

我在shell上运行时失败了。行为不是我预期的从A到Z的循环。它实际上根本不做循环,我是否需要转换我的变量或是否有一个技巧使这工作?看看我在这里做的不好的例子(这不起作用)

storage-33:~# for i in {$first_sd..$last_sd}; do echo HI $i; done
HI {a..h}

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用eval记住以逃避相应的字符:

eval "for i in {$first_sd..$last_sd}; do echo HI \$i; done"

答案 1 :(得分:1)

使用eval

for i in $(eval echo "{$first_sd..$last_sd}"); do echo HI $i; done