2つのコマンドが&&演算子で連結されている場合、2番目のコマンドの代わりに1番目のコマンドを待つ方法

2つのコマンドが&&演算子で連結されている場合、2番目のコマンドの代わりに1番目のコマンドを待つ方法

次のようなbashループがありますfor

for file in *.mp4; do
  command1 "${file}" && command2 "${file}"
done

command2これにより、期待どおりに成功する限り実行が可能になります。command1

今私が望むものはループすることですcommand1完了のみ待つ、しかし待つ必要はありませんcommand2繰り返す前に完了しました。これを行う方法はありますか?

私は成功せずに試しました。

  • command1 && command2 &- 終了を待たずにcommand1並列に実行
  • command1 && ( command2 & )-command2出るまでお待ちください。必要ありません。

ベストアンサー1

少し詳しくは、次のようにすると動作します。

for file in *.mp4; do
  if command1 "${file}"; then
    command2 "${file}" &
  fi
done

おすすめ記事