bashの変数をsplitして配列を作る方法
小粋空間 » Programming Language » bash » bashの変数をsplitして配列を作る方法
bashの変数をsplitして配列を作る方法を紹介します。
1.問題点
bashで次のような変数を作成しました。
#!/bin/bash
foo=a,b,c,d,f,e,g
この変数fooを","でsplit(分割)して配列変数に代入したいのですが、方法がわかりません。
ということで、bashの変数をsplitして配列を作る方法を紹介します。
2.bashの変数をsplitして配列を作る
bashの変数をsplitして配列を作るには、文字列置換を利用します。
#!/bin/bash
foo=a,b,c,d,f,e,g
list=(${foo//,/ })
echo ${list[@]}
echo ${list[1]}
実行結果
a b c d e f g
b
3.文字列置換について
今回利用したbashの文字列置換のフォーマットは、
${変数名/置換前文字列/置換後文字列}
が基本です。
これで、変数の中にマッチする文字があれば1回のみ置換します。
#!/bin/bash
foo=a,b,c,d,f,e,g
list=(${foo/,/ })
echo ${list[@]}
echo ${list[1]}
実行結果
a b,c,d,e,f,g
b,c,d,e,f,g
マッチする文字をすべて置換したい場合は、2項のサンプルのようにスラッシュを2つにして、
${変数名//置換前文字列/置換後文字列}
とします。
"//"はsedの"/g"オプションと同じ意味になります。