10

私は bash でスクリプトを書いています。コマンドを実行し、各行を個別に処理したいと考えています。例えば:

LINES=$(df)
echo $LINES

改行をスペースで変換したすべての出力が返されます。

例:

出力が次のようになっている場合:

1
2
3

それから私は得るだろう

1 2 3

コマンドの出力を変数に配置して、新しい行を新しい行のままにして、変数を印刷すると適切な出力が得られるようにするにはどうすればよいですか?

4

2 に答える 2

14

一般に、ほとんどの場合、bash$vはトラブルを求めています。ほとんどの場合、あなたが本当に意味することは二重引用符"$v"で囲まれています:

LINES="$(df)"
echo "$LINES"
于 2012-01-03T13:43:45.260 に答える
7

いいえ、それはしません。改行の$(something)後に続く唯一のストリップ。

引数をechoに拡張すると、空白で分割され、echoよりも個別の引数がスペースに連結されます。空白を保持するには、もう一度引用する必要があります。

echo "$LINES"

割り当てを引用する必要がないことに注意してください。展開の結果は、変数への代入および。への引数で単語分割されませんcase。しかし、それは引用することができ、常に引用符を入れることを学ぶ方が簡単です。

于 2012-01-03T13:47:56.770 に答える