中かっこ拡張と複合コマンド

中かっこ拡張と複合コマンド

この2つのループがなぜ違うのかわかりません。中かっこ拡張の実行時期とスペースの解釈方法に関連する必要があります。

for i in b{e,\ }s ; do echo $i ; done

for i in bes b s ; do echo $i ; done

そしてこれを考えてください

for i in $(echo b{e,\ }s) ; do echo $i ; done

ベストアンサー1

これにより、for i in b{e,\ }s ; do echo $i ; done中括弧拡張はb{e,\ }s2つの引数(1つはis bes、もう1つはis)b sに拡張され、forループには2つの値があります。これにはパラメータがb s1つしかありません。

一方で、for i in bes b s ; do echo $i ; done繰り返す3つの引数(スペースで区切られた)、つまり、およびをbes明示b的に言及しましたs

3番目のケースでは、コマンド置換は$(echo b{e,\ }s)3つの引数を生成するため、2番目のケースと同様に、ループには3besつの値があります。bsfor

おすすめ記事