如果某个关键字显示在命令的输出中,我想发送一个 SIGKILL。例如,如果发出以下命令:
ubuntu@ip-172-31-24-250:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=109 time=0.687 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=109 time=0.704 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=109 time=0.711 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=109 time=0.809 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=109 time=0.727 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=109 time=0.835 ms
^C
看到输出后 "icmp_seq=6"我希望命令自动停止。我知道 平 8.8.8.8 -c 6 将产生相同的结果,但这仅用于示例。
最佳答案
请您尝试以下方法:
#!/bin/bash
ping 8.8.8.8 | while IFS= read -r line; do
echo "$line"
[[ $line =~ icmp_seq=6 ]] && kill -9 $(pidof ping)
done
关于linux - 在 Linux 中输出中的关键字后终止命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72166332/