6

一連のコマンドを並行して実行し、その出力を変数に格納するにはどうすればよいですか?

私はもう試した:

output=`(echo -n "started "; sleep 2; echo "stopped") &`

echo "output before=$output"
wait
echo "output after=$output"

2 秒間の一時停止の後、次のように表示されます。

output before=started stopped
output after=started stopped

私は期待しました:

output before=
<2 seconds pause>
output after=started stopped

バックグラウンドで一連のコマンドを実行し、その出力を変数に保存するにはどうすればよいですか?

4

2 に答える 2

6
于 2013-10-14T11:33:35.377 に答える
0

その理由は、この行の評価だと思います: output=`(echo -n "started "; sleep 2; echo "stopped") &` コマンド全体をバックグラウンドに置きたいのに(devnullが述べたように、これはリターンコード0になります)-しかし、結果は不明です。$output に値を代入するには、元のコマンドが終了するまで待機する必要があります。

バックグラウンドで var の割り当てを行いませんでした。

しかし、それでも @devnull の回避策が適用されます。ファイルの代わりに、名前付きパイプを使用できます。

于 2015-06-26T01:22:49.357 に答える