を通過するループがあるとしましょう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")
必要に応じてループを使用してください。テキストの処理に使用するには、そうします。 -氏