
Es gibt Befehle wie
iwevent
oder
tcpdump -n Quellhost xxxx
die bei einem Ereignis einige Zeilen an die Standardausgabe senden. Gibt es eine Möglichkeit, einen Befehl unmittelbar nach dem Drucken einer Zeile auszuführen? Beispiel:
iwevent | echo "Wireless event happened"
Antwort1
Lesen Sie einfach stdin in einer Schleife
iwevent | while IFS= read -r line; do
echo "[$(date "+%F %T")] - $line"
done
Abhängig davon, was Sie im Schleifenkörper tun, möchten Sie vielleicht
while IFS= read -r line; do
echo "[$(date "+%F %T")] - $line"
done < <(iwevent)
Dadurch werden die impliziten Subshell-Effekte der Verwendung einer Pipeline vermieden.
Antwort2
Ich bin nicht sicher, was Sie meinen, aber etwas in diese Richtung?
while IFS= read -r line; do
printf "%s\n%s\n" "$line" "Yohooo! One more package."
done < <(tcpdump -i any -nS)