シェルスクリプトで変数内の改行を有効にする

2024-08-02

改行を含まれる変数で改行を表示する

シェルスクリプトを改行を含まれる変数をechoコマンドなどで表示した場合に、下記のように改行がスペースに変換される場合があります。

$ cat test.sh
#!/bin/bash

TEST="12345
ABCDEF
TEST

aaaa"

echo $TEST

$ sh test.sh
12345 ABCDEF TEST aaaa

変数の中の改行やタブの扱いは、変数をダブルクォート(”)で囲まない場合は、改行やタブをスペースに変換されます
改行やタブをそのまま表示したい場合は、改行やタブを含んだ変数をダブルクォート(”)で囲む必要があります。

例)echo “$変数名"

$ cat test.sh
#!/bin/bash

TEST="12345
ABCDEF
TEST

aaaa"

echo "$TEST"

$ sh test.sh
12345
ABCDEF
TEST

タブも同様に表示する変数をダブルクォートで囲まない場合は、スペースに変換されます

$ cat test2.sh
#!/bin/bash

TEST="12345	ABCDEF	TEST	1aaaa"

echo $TEST
echo "-------------"
echo "$TEST"

$ sh test2.sh
12345 ABCDEF TEST 1aaaa
-------------
12345	ABCDEF	TEST	1aaaa