bashのブレース展開の区切り文字(デリミタ)を変更して出力する

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
Sponsored Links

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

[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

 

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

 

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: コンソール上で回数を指定して文字列を繰り返し出力(リピート)させる | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*