forループで使用するために変数に格納されている中括弧拡張文字列を拡張しますか?

forループで使用するために変数に格納されている中括弧拡張文字列を拡張しますか?

次のスクリプトがあります。

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

今、私は中括弧拡張がリテラルでのみ機能することを理解しています。つまり、エコです。ただし、これはすべてbarコンソールに1つを印刷するだけです。なぜ(文字列/中括弧拡張が機能しない)?

私が期待していることは次のとおりです。

  1. foo{1..5}拡張()を表す文字列を変数に割り当てます。FOOS
  2. replacement$FOOSなので基本的にこれを得ました for i in 'echo foo{1..5}' do(ここでバックティックを避けられないようです)。
  3. echoを実行したので、今for i in foo1 foo2 foo3 foo4 foo5 do
  4. barコンソール出力を5回実行して印刷します。
  5. bar唯一の出力で画面に1つだけ印刷しないでください:-)

ベストアンサー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

おすすめ記事