この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,\ }s
2つの引数(1つはis bes
、もう1つはis)b s
に拡張され、for
ループには2つの値があります。これにはパラメータがb s
1つしかありません。
一方で、for i in bes b s ; do echo $i ; done
繰り返す3つの引数(スペースで区切られた)、つまり、およびをbes
明示b
的に言及しましたs
。
3番目のケースでは、コマンド置換は$(echo b{e,\ }s)
3つの引数を生成するため、2番目のケースと同様に、ループには3bes
つの値があります。b
s
for