bashのブレース展開を利用する際、どうしても出力の区切り文字が空白になってしまう。 これをawkのOFSのように、任意の文字にしたいといった場合どうしたらいいのかと調べたところ、サブシェルで一度リストに入れてしまって、そこでIFSを指定して出力時の区切り文字を指定するという方法がよさそうだ。 以下、実行例。ここでは、区切り文字をコロン(:)にしている。

echo $(set 'ABC'{1..10};IFS=:;echo "$*")
[root@BS-PUB-CENT7-01 ~]# echo $(set 'ABC'{1..10};IFS=:;echo "$*")
ABC1:ABC2:ABC3:ABC4:ABC5:ABC6:ABC7:ABC8:ABC9:ABC10

後から置換する方法だと、値にスペースが入っている場合について考える必要があったりするが、この方法ならそれを気にしなくてもよくなる。

[root@BS-PUB-CENT7-01 ~]# echo $(set 'ABC '{1..10};IFS=:;echo "$*")
ABC 1:ABC 2:ABC 3:ABC 4:ABC 5:ABC 6:ABC 7:ABC 8:ABC 9:ABC 10

色々と応用がききそうな気がする。