出力を待ってからコマンドを実行してください。

出力を待ってからコマンドを実行してください。

いくつかの出力を提供するbashスクリプトがあります。しかし、時には出力に長い時間がかかることがあります。 5秒間出力コマンドだけ待つことはどのように可能ですか? 5秒以内に出力がない場合は、bash-script-2を実行してください。出力がある場合は、bash-script-1を実行します。

ウェブで検索してみましたが、関連情報が見つかりませんでした。

答え1

出力をログファイルに送信し、tail -fログファイルをタイムアウトに送信し、何でも一致します。

some-long-running-command > log-file &
if timeout 5 tail -f log-file | grep .
then
  # grep found something before tail was killed
  bash-script-1
else
  # tail was killed before grep found anything
  bash-script-2
fi

これtimeout注文するGNU coreutilsから。

関連情報