
特定の文字列が最終的にログファイルに書き込まれると、きちんと終了するコマンドを作成しようとしています。
以下を試しましたが、決して終了しません。
設定:コマンドをテストするためのファイルを作成します。
echo "Build completed." > build.log
試してみました。動作せず、コマンドは終了しません。
tail -fn+0 build.log | grep -qe "completed"
tail -fn+0 build.log | grep --line-buffered -qe "completed"
これはうまくいきますが複雑なので、まだ慣用的な解決策が見つからなかったと信じています。
while true; do awk '/completed/{f=1; exit} END{exit !f}' && break; sleep 1; done < build.log
macOSベンチュラ13.0、zsh