#!/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。これらの単語を区切る空白(改行を含む)は、シェルによって食べられます。
この場合、異なる行を個別の引数として扱います。