扩展保存在变量中的大括号扩展字符串以在 for 循环中使用?

扩展保存在变量中的大括号扩展字符串以在 for 循环中使用?

我有以下脚本:

FOOS=foo{1..5}
for i in `echo $FOOS` do
echo bar
done

现在我(认为我)明白大括号扩展仅适用于文字 - 因此是回声 - 但所有这一切似乎只是将一个打印bar到控制台。为什么(字符串/大括号扩展不起作用)?

我期望发生的是:

  1. foo{1..5}将表示扩展的字符串 ( ) 分配给变量FOOS
  2. 替代$FOOS,所以我基本上已经得到了 for i in 'echo foo{1..5}' do(看起来我无法在这里逃避反引号)
  3. 执行 echo,所以我现在有了for i in foo1 foo2 foo3 foo4 foo5 do
  4. 执行 for,打印bar五次到控制台输出
  5. 不只是bar在屏幕上打印一个作为唯一的输出:-)

答案1

1.

FOO=$(echo foo{1..5})

但更好的是使用数组

FOO=(foo{1..5})

2.

echo ${FOO[*]}

4.

for i in {1..5}
do
    echo bar
done

或者

for i in $(seq 5)
do
    echo bar
done

相关内容