Bashなどのシェルで変数に設定された文字列を連結する方法をまとめます。
旧来の方法
以下は、変数「foo」に設定された「Hoge」に、「 Fuga」を連結して設定しなおすシェルスクリプトです。
#!/bin/sh
foo="Hoge"
foo="$foo Fuga"
echo $foo
実行すると、以下のように出力されます。
Hoge Fuga
この例では、「$foo Fuga」内の「$foo」が「Hoge」に展開された結果、「Hoge Fuga」となって変数「foo」が設定しなおされています。
この「旧来の方法」は、shでも使えるので、環境を選びません。
Bashがサポートする新しい方法
Bashなら、より効率的な書き方で変数値に文字列を連結できます。次の例は、上の例と同じように動作します。
#!/bin/bash
foo="Hoge"
foo+=" Fuga"
echo $foo
実行すると、以下のように出力されます。
Hoge Fuga
Bashなら、他のプログラミング言語と同じように「+=」という演算子で文字列を連結できるというわけです。
この方法を使えば、変数名を書く回数を減らすことができるでしょう。
ただし、この書き方では「+=」は「文字列として連結」となるので、「足し算」にはならないことに注意が必要です。
#!/bin/bash
foo=2
bar=3
foo+=$bar
echo $foo
実行すると、以下のように出力されます。
23
このように「2」と「3」が連結され「23」となります。「5」にはなりません。
足し算を実行して「5」を出力するには、次のようなスクリプトにします。
#!/bin/bash
foo=2
bar=3
((foo+=bar))
echo $foo
このように、「(( ))」で囲うことで、「整数」として演算させることができます。
コメント