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
色々と応用がききそうな気がする。