基于事件的输出后运行命令

基于事件的输出后运行命令

有类似的命令

活动

或者

tcpdump -n src 主机 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)

这避免了使用管道的隐式子 shell 效应。

答案2

不确定我明白你的意思,但有朝这个方向的东西吗?

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

相关内容