ฉันเขียนสคริปต์ทุบตีง่าย ๆ ด้วยวนสำหรับพิมพ์วันที่และ 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+Zkill %1
เกิดอะไรขึ้นที่นี่ด้วย^C?
for f in *.txt; do vi "$f"; cp "$f" newdir; done
เช่นพิจารณา หากผู้ใช้พิมพ์ Ctrl + C ในขณะที่แก้ไขไฟล์ใดไฟล์หนึ่งvi
เพียงแค่แสดงข้อความ ดูเหมือนว่าการวนซ้ำควรดำเนินการต่อหลังจากผู้ใช้แก้ไขไฟล์เสร็จ (และใช่ฉันรู้ว่าคุณสามารถพูดได้vi *.txt; cp *.txt newdir
ฉันแค่ส่งfor
ลูปเป็นตัวอย่าง)