2008-10-30 7 views
5

사용자가 bash 스크립트에서 ctrl -c를 사용하여 스크립트를 중지하면 어떻게 명령을 실행할 수 있습니까?bash 스크립트가 중지되면 명령을 실행하십시오.

현재, 나는이 있습니다

afplay file.mp3 

while true: 
do osascript -e "set volume 10" 
end 

을하지만 명령-C 또는 다른 키를 누를 경우 내가 관계없이, 사용자가 그것으로 끝날 때 killall afplay을 실행하고 싶습니다.

답변

9

trap 'killall afplay' EXIT

4

사용 trap. 이 (스크립트, 또는 다른 스크립트의 다른 인스턴스에서, 예를 들어) 관련이없는 프로세스를 죽일 수 있기 때문에

trap "kill $pid" INT TERM EXIT 

또한, killall 또는 pkill 마십시오. 대신 플레이어의 PID를 변수에 넣고 해당 PID 만 제거하십시오. bash는 프로세스가 KILL 신호 (9)가에 공정 불가능으로 보낸 경우

trap 'killall afplay' EXIT 

참고 그러나이 작동하지 않습니다 :

+0

프로세스의 PID 획득에 대한 제안 사항이 있습니까? (프로세스가 로컬에서 시작되면 곧바로 진행될 것이라고 상상해 봅니다.) – isaaclw

2

당신은 당신의 bash는 스크립트에서 trap 문을 둘 필요 그 신호를 가로 채십시오.

관련 문제