2013-02-05 2 views

답변

7

, 당신은 bash 내장 trap 트랩 신호에

잘 :-), 적어도 그 갇혀 할 수 사용할 수 있지만, CTRL-C는 보통 INT 신호에 연결됩니다. 신호를 트랩하고 임의의 코드를 실행할 수 있습니다.

다음 스크립트는 텍스트를 입력 한 다음 다시 표시하도록 요청합니다. 아마, 당신은 INT 신호를 생성, 단순히에 젠장 당신과 종료 :

테스트 실행 성적 증명서가 (완전히 입력 라인, 어떤 항목 전에 CTRL-C를 눌러과 선, 그리고 라인을 다음과
#!/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을 포함하여 스크립트에서 신호를 포착하는 데 사용됩니다. 이 많은 것에 충격으로 올 수 있지만

+0

+1 이것은 훨씬 더 좋았습니다. 스크립트를 연결하는 논리 연산자를 제안하려고했습니다. – slezica