#!/bin/bash
RESULT=$(ls)
echo -e "$RESULT" # prints the result of 'ls' with new lines
echo -e $RESULT # prints the result of 'ls' in one line
2 番目のアプローチでは、項目ごとに改行するのではなく、すべてを 1 行に出力するのはなぜですか? オプションが文字-e
の解釈をトリガーするべきではあり\n
ませんか?
このコマンドを実行すると、次のようになります。
echo -e $RESULT
Bashは;で単語分割を実行します。$RESULT
つまり、空白で分割し、結果のトークンを個別の引数としてに渡しますecho
。したがって、基本的にこれを実行しています。
echo -e file1.txt file2.txt file3.txt
改行が含まれecho
ていることを知る方法はありません。$RESULT
(-e
ちなみに、ここでは実際には関係ありません。-e
改行文字の処理には影響しません。\n
バックスラッシュの後に。が続くような実際のシーケンスのみに影響しますn
。)
-e
無関係です。
echo "$RESULT"
1つのパラメーター、改行が埋め込まれた文字列が表示されます。
echo $RESULT
内の単語と同じ数のパラメータを参照します$RESULT
。これらの単語を区切る空白(改行を含む)は、シェルによって食べられます。
この場合、異なる行を個別の引数として扱います。