Ejecutar comandos después de salidas basadas en eventos

Ejecutar comandos después de salidas basadas en eventos

hay comandos como

yo evento

o

tcpdump -n host src xxxx

que envían a la salida estándar algunas líneas cuando sucede algo. ¿Existe alguna forma de ejecutar algún comando inmediatamente después de imprimir una línea? Ex:

iwevent | echo "Wireless event happened"

Respuesta1

Simplemente lea stdin en un bucle

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

Dependiendo de lo que hagas en el cuerpo del bucle, es posible que desees

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

Eso evita los efectos de subcapa implícitos del uso de una tubería.

Respuesta2

No estoy seguro de entender lo que quieres decir, pero ¿algo en la dirección de esto?

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

información relacionada