イベントベースの出力後にコマンドを実行する

イベントベースの出力後にコマンドを実行する

次のようなコマンドがあります

イベント

または

tcpdump -n 送信元ホスト xxxx

何かが起こったときに標準出力にいくつかの行を送信します。行が印刷された直後に何らかのコマンドを実行する方法はありますか。例:

iwevent | echo "Wireless event happened"

答え1

ループでstdinを読み込むだけ

iwevent | while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done

ループ本体で何をするかによって、

while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done < <(iwevent)

これにより、パイプラインの使用による暗黙的なサブシェルの影響を回避できます。

答え2

何を意味しているのかよく分かりませんが、これと似たようなものはありますか?

while IFS= read -r line; do
    printf "%s\n%s\n" "$line" "Yohooo! One more package."
done < <(tcpdump -i any -nS)

関連情報