날짜를 인쇄하고 원격 시스템에 핑하기위한 루프가있는 간단한 bash 스크립트를 작성했습니다.
#!/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
입니다.)