tail -fを使ってgrep -q &&を使う別の方法はありますか?

tail -fを使ってgrep -q &&を使う別の方法はありますか?

私はこの解決策を見つけました: https://stackoverflow.com/questions/7178888/grep-q-not-exiting-with-tail-f

しかし、他の可能性もありますか?

UPD:したいのですが、tail -f | grep -q something && echo 'found!'tail -fはパイプが閉じることを防ぎ、echoコマンドを実行する機会がないため動作しません。

答え1

そうすることによる責任は自分にあります。

tail -n 0 -f /tmp/bar | { grep -q -m1 zoo && echo found ; pkill -P $$ '^tail$' ; }

pkill一致が最後の行にある場合は、このコマンドが必要です。ただし、tail同じ親プロセスがある場合は、バックグラウンドで別のプロセスを終了できます。

答え2

私はあなたがgrep's-qまたは-mオプションを使用したいと思います。実際に一致する行を表示するにはを使用してください-m1。これにより、行が印刷され終了します(aを送信するとSIGPIPE終了tailします)。その行を見たくない場合は、最初の項目が見つかったときに-q終了します。

関連情報