셸 스크립트가 실행 도중에 중단되면 "rm -rf /etc/XXX.pid
"과 같은 명령을 실행하려고합니다. 사용하는 것 같이 CTRL+C
나에게 무엇을 도와 줄 사람이 있습니까?쉘 스크립트가 중단되었을 때 명령을 실행하는 방법은 무엇입니까?
5
A
답변
7
, 당신은 bash
내장 trap
트랩 신호에
잘 :-), 적어도 그 이 갇혀 할 수 사용할 수 있지만, CTRL-C는 보통 INT
신호에 연결됩니다. 신호를 트랩하고 임의의 코드를 실행할 수 있습니다.
다음 스크립트는 텍스트를 입력 한 다음 다시 표시하도록 요청합니다. 아마, 당신은 INT
신호를 생성, 단순히에 젠장 당신과 종료 :
#!/bin/bash
exitfn() {
trap SIGINT # Restore signal handling for SIGINT
echo; echo 'Aarghh!!' # Growl at user,
exit # then exit script.
}
trap "exitfn" INT # Set up SIGINT trap to call function.
read -p "What? " # Ask user for input.
echo "You said: $REPLY"
trap SIGINT # Restore signal handling to previous before exit.
CTRL-C를 누르기 전에 부분 입력) :
pax> ./testprog.sh
What? hello there
You said: hello there
pax> ./testprog.sh
What? ^C
Aarghh!!
pax> ./qq.sh
What? incomplete line being entere... ^C
Aarghh!!
3
trap
은 Ctrl-C를 누를 때 생성되는 SIGINT
을 포함하여 스크립트에서 신호를 포착하는 데 사용됩니다. 이 많은 것에 충격으로 올 수 있지만
+1 이것은 훨씬 더 좋았습니다. 스크립트를 연결하는 논리 연산자를 제안하려고했습니다. – slezica