私はbashで同時に2つのコマンドを実行し、両方の成功を待ってから3番目のコマンドを実行したいと思います。また、これをtime
コマンドに含めることもできます。模式的に:私は中括弧の間のコマンドの成功を待たずに、「OK」すぐにプリントアウトし得る並列コマンドのセットが成功したときにコマンドを実行するにはどうすればよいですか?
time { { echo "hi" & sleep 5 & } && echo "ok"; } &> time.log
:たとえば、私が実行し、場合
time { { cmd_1 & cmd_2 & } && cmd 3; } &> time.log
。さらに、time.log
ファイルには、標準エラーと2つのコマンドの標準出力が角かっこで囲まれていますが、出力はtime
で、ファイルではなく端末のみに出力されます。
私は何かがクリアで簡単に欠けていると確信しています!このような
このコマンドを使用する際に問題が発生しました。変数(X)に '(sleep 5; exit 1)&pid1 = $!' の出力を保存したときには動作しません: 'X = $(スリープ5;終了1)&pid1 = $! ' なぜですか? – Macspider
私はそれがバックグラウンドに置かれると、出力は準備が整っておらず、バックグラウンドジョブは 'wait'でブロックするので、' $ X'は決してその値を取得しないと思います。値をファイルに書き込み、後でそれを読み込みます。 –