echoからbash組み込みでパイプを読むことはできませんか? [コピー]

echoからbash組み込みでパイプを読むことはできませんか? [コピー]

を通過するループがあるとしましょうread。元の行とこの行を別の変数に分割したいと思います。これはread素晴らしい動作します。ただし、変数をエコーしread​​てパイプに入れて変数を埋めることはできません。基本的なケースは次のとおりです。

echo "a b c d e f g" | read line
echo "Read obtained: $line"

結果:

Read obtained:

自分が好きなように読むようにするにはどうすればよいですか?または:読んでもらうのはなぜ間違っているのですか?

答え1

read次のように、パイプから何を読んでいるのかがわかります。@yardenaの返信

echo "a b c d e f g" | { read line; echo line=$line; }

答え2

問題は範囲です。変数は、パイプによって生成されたサブシェルの外側に値を持ちません。逆に:

while read line; do echo "read obtained: ${line}"; done < <(echo "a b c d e f g")

必要に応じてループを使用してください。テキストの処理に使用するには、そうします。 -氏

関連情報