シェルスクリプトで変数に改行コードを含める方法
Pocket

今回はちょっと初歩的な内容だけど、シェルスクリプトで利用する変数に改行を含めた文字列を代入、取得する方法についてを記述する。
まずは、以下のようにcatで改行を含んだファイルを変数に代入してみよう。

20141114_000001

/work/test$ cat test.txt
testtest
testtest1
testtest2
testtest3

/work/test$ aaa=`cat test.txt`
/work/test$

この、上記で適当に指定した変数「aaa」からechoで改行付きで出力させる場合、以下のように「”(ダブルクォーテーション)」で変数を囲ってあげる必要がある。

20141114_000002

/work/test$ echo $aaa
testtest testtest1 testtest2 testtest3
/work/test$
/work/test$ echo "$aaa"
testtest
testtest1
testtest2
testtest3
/work/test$
Sponsored Links

では、シェルスクリプト内で改行コードと文字列を結合させて改行を含めた変数を作成する場合、どうすればよいのだろうか?
まずは、単純に改行コード「\n」を含めた状態で実行してみよう。

$ bbb="aaa\naaa\naaa\n"

で、これを先ほどと同様にechoで読み取る。
この時、「-e」オプションを利用しないと、変数に入れいている改行コード「\n」が認識されず、一行で表示されてしまう。

20141114_000003

/work/test$ echo $bbb
aaa\naaa\naaa\n
/work/test$
/work/test$ echo "$bbb"
aaa\naaa\naaa\n
/work/test$
/work/test$ echo -e $bbb
aaa
aaa
aaa

/work/test$
/work/test$ echo -e "$bbb"
aaa
aaa
aaa

/work/test$

とはいえ、シェルスクリプト内で改行コードを含めた変数を使いたい場合、「echo -e」を用いないでも改行済の変数を利用したいときも有るだろう。
そういう時は、他の変数に「echo -e」を利用して代入してしまえばいい。

20141114_000004

/work/test$ ccc=`echo -e "$bbb"`
/work/test$
/work/test$ echo $ccc
aaa aaa aaa
/work/test$ echo "$ccc"
aaa
aaa
aaa
/work/test$

 

Pocket

Written by blacknon

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

This article has 1 comments

  1. Pingback: シェルスクリプトで外部ファイルに記述された変数を利用する方法 | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

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