2008-10-30 82 views
5

如何在bash腳本中執行命令時用戶停止腳本(使用ctrl -c)?當bash腳本停止時運行命令

目前,我有這個:

afplay file.mp3 

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

,但我想,當用戶用它完成它來執行killall afplay,不論它是命令C或其他按鍵。

回答

9

trap 'killall afplay' EXIT

4

使用trap

trap "kill $pid" INT TERM EXIT 

也避免killallpkill,因爲它可以殺死不相關的進程(例如,從您的腳本,甚至是不同的腳本的另一個實例)。相反,將播放器的PID放在一個變量中,只殺掉那個PID。

+0

對於抓取進程的PID有什麼建議嗎? (如果這個過程是從本地開始的,我想它是直接的) – isaaclw 2012-04-18 16:53:32

2

你需要把一個trap聲明在你的bash腳本:

trap 'killall afplay' EXIT 

不過請注意,這是行不通的,如果在bash進程發送KILL信號(9),因爲它是不可能的進程截取該信號。