Linux の echo
コマンドで文字列変数 $str
の値を出力しようとして、下記のように実行すると、文字列に含まれている連続するスペースが 1 つのスペースにまとめられてしまいます。
#!/bin/bash
str="AAA BBB CCC"
echo $str
AAA BBB CCC
これは、変数展開が行われることによってダブルクォートが取り除かれ、下記のように echo
コマンドに 3 つのパラメータが渡されたものとして扱われるからです。
パラメータの区切りとして使われるスペースの数は関係なく、各パラメータ (AAA
、BBB
、CCC
) が 1 つのスペースで結合されて出力されます。
$ echo AAA BBB CCC
AAA BBB CCC
スペースを含む文字列を 1 つの文字列として echo
コマンドに渡すには、次のようにダブルクォートで囲む必要があります。
#!/bin/bash
str="AAA BBB CCC"
echo "$str"
AAA BBB CCC