0
#!/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ませんか?

4

3 に答える 3

4

このコマンドを実行すると、次のようになります。

echo -e $RESULT

Bashは;で単語分割を実行します。$RESULTつまり、空白で分割し、結果のトークンを個別の引数としてに渡しますecho。したがって、基本的にこれを実行しています。

echo -e file1.txt file2.txt file3.txt

改行が含まれechoていることを知る方法はありません。$RESULT

-eちなみに、ここでは実際には関係ありません。-e改行文字の処理には影響しません。\nバックスラッシュの後に。が続くような実際のシーケンスのみに影響しますn。)

于 2012-08-13T20:25:14.560 に答える
4

-e無関係です。

echo "$RESULT"1つのパラメーター、改行が埋め込まれた文字列が表示されます。

echo $RESULT内の単語と同じ数のパラメータを参照します$RESULT。これらの単語を区切る空白(改行を含む)は、シェルによって食べられます。

于 2012-08-13T20:25:42.990 に答える
0

この場合、異なる行を個別の引数として扱います。

于 2012-08-13T20:25:22.483 に答える