我编写了一个带有循环的简单bash脚本,用于打印日期并ping到远程计算机:
#!/bin/bash
while true; do
# *** DATE: Thu Sep 17 10:17:50 CEST 2015 ***
echo -e "\n*** DATE:" `date` " ***";
echo "********************************************"
ping -c5 $1;
done
当我从终端运行它时,无法使用停止它Ctrl+C。似乎将传送^C到终端,但是脚本没有停止。
MacAir:~ tomas$ ping-tester.bash www.google.com
*** DATE: Thu Sep 17 23:58:42 CEST 2015 ***
********************************************
PING www.google.com (216.58.211.228): 56 data bytes
64 bytes from 216.58.211.228: icmp_seq=0 ttl=55 time=39.195 ms
64 bytes from 216.58.211.228: icmp_seq=1 ttl=55 time=37.759 ms
^C <= That is Ctrl+C press
--- www.google.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 40.887/59.699/78.510/18.812 ms
*** DATE: Thu Sep 17 23:58:48 CEST 2015 ***
********************************************
PING www.google.com (216.58.211.196): 56 data bytes
64 bytes from 216.58.211.196: icmp_seq=0 ttl=55 time=37.460 ms
64 bytes from 216.58.211.196: icmp_seq=1 ttl=55 time=37.371 ms
无论我按了多少次或执行速度有多快。我无法阻止它。
进行测试并自己实现。
作为辅助解决方案,我使用Ctrl+Z停止它,然后停止kill %1
。
这到底是^C怎么回事?
for f in *.txt; do vi "$f"; cp "$f" newdir; done
。如果用户在编辑文件之一时键入Ctrl + C,则vi
仅显示一条消息。在用户完成编辑文件后,循环应该继续进行似乎是合理的。(是的,我知道您可以说vi *.txt; cp *.txt newdir
;我只是以提交for
循环为例。)