ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

関数の返り値として文字列を使うときに、改行を含める方法

シェルスクリプトで、文字列を返すときに改行を含める方法

改行がくっついて困ったのでメモ

[test.txt]

# 改行を含むテキスト
aaa
bbb
ccc

[test.sh]

func(){ #  改行を含む出力をする関数
    cat test.txt
}

ret=`func`
echo -e $ret
echo -e "$ret"

ret=$(func)
echo -e $ret
echo -e "$ret"

[実行結果]

註:#コメントは後付けです

$ sh test.sh
# echo -e $ret は改行しない
aaa bbb ccc 
# echo -e "$ret" は改行する
aaa 
bbb
ccc
# echo -e $ret 値の取得方法を変えても上と同じ
aaa bbb ccc 
# echo -e "$ret" 値の取得方法を変えても上と同じ
aaa
bbb
ccc

結論

ダブルクオテーションでくくる