1
grep -A 26 "some text" somefile.txt |
awk '/other text/ { gsub(/M/, " "); print $4 }' | while read line
do
   //operations resulting in a true of false answer
done

while で宣言および使用される変数は、パイプによって作成されたサブシェルにのみ存在します。外部からそれらを追跡するにはどうすればよいですか? 返された true または false をスクリプトの後半で使用する必要がある

4

2 に答える 2

3

プロセス置換を使用します。

while read line
do
   # operations resulting in a true of false answer
done < <(grep -A 26 "some text" somefile.txt | \
         awk '/other text/ { gsub(/M/, " "); print $4 }' )
于 2012-10-03T09:11:11.303 に答える
1

bash4.2 以降を使用している場合は、lastpipeオプションを設定します。これにより、パイプラインの最後のコマンド (この場合は while ループ) がサブシェルではなく現在のシェルで実行されるようになるため、ループで行った変数への変更は完了後も表示されたままになります。

于 2012-10-03T12:26:34.810 に答える