2008-10-30 119 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),因为它是不可能的进程截取该信号。