
есть такие команды как
iwevent
или
tcpdump -n src хост xxxx
которые отправляют на stdout некоторые строки, когда что-то происходит. Есть ли какая-либо форма запуска некоторой команды сразу после того, как строка напечатана. Пример:
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)