次はなぜ3 2 1 6 5 4を印刷しないのですか?
echo '1 2 3 4 5 6' | while read a b c; do echo result: $c b a; done
最初の3つの数字を順番に読んで逆順に印刷し、最後の3つの数字を読んで逆順に印刷する方が良いでしょうか。
答え1
6つの「単語」を含む行を提供し、それを3つの変数(a、b、c)で読み込みます。最初の変数aには値1が割り当てられ、2番目の変数bには値2が割り当てられ、cには「3 4 5 6」行の残りの部分が含まれます。
出力は、3 4 5 6 b a
あなたが書くことなく文だけを$c $b $a
書いたからです$c b a
。
と書くと$c $b $a
結果はになります3 4 5 6 2 1
。
答え2
混乱する重要な点は、他の回答からスキップし、以下にあります。バッシュのマニュアルページ:
read
… (オプション)…[name ...]
標準入力から1行読みます。...、最初の単語が最初の単語に割り当てられます。名前、第2ワードから第2ワードへ名前、残りの単語と中間区切り文字が最後の単語に割り当てられます。名前… [ハイライトが追加されました。 ]
または出力からhelp read
:
読む… (オプション)…[名前...]
標準入力から1行読みますフィールドに分割します。
読む一つの線標準入力では、...単語の分割と同様に、行は最初の単語が最初のNAMEに割り当てられ、2番目の単語が2番目のNAMEに割り当てられるなどのフィールドに分割され、残りのすべての単語は最後のA NAMEに割り当てられます。 …
重要な内容:read
1行以上を読んではいけません。