如何在bash脚本中执行命令时用户停止脚本(使用ctrl -c)?当bash脚本停止时运行命令
目前,我有这个:
afplay file.mp3
while true:
do osascript -e "set volume 10"
end
,但我想,当用户用它完成它来执行killall afplay
,不论它是命令C或其他按键。
如何在bash脚本中执行命令时用户停止脚本(使用ctrl -c)?当bash脚本停止时运行命令
目前,我有这个:
afplay file.mp3
while true:
do osascript -e "set volume 10"
end
,但我想,当用户用它完成它来执行killall afplay
,不论它是命令C或其他按键。
trap 'killall afplay' EXIT
使用trap
。
trap "kill $pid" INT TERM EXIT
也避免killall
或pkill
,因为它可以杀死不相关的进程(例如,从您的脚本,甚至是不同的脚本的另一个实例)。相反,将播放器的PID放在一个变量中,只杀掉那个PID。
你需要把一个trap
声明在你的bash脚本:
trap 'killall afplay' EXIT
不过请注意,这是行不通的,如果在bash进程发送KILL
信号(9),因为它是不可能的进程截取该信号。
对于抓取进程的PID有什么建议吗? (如果这个过程是从本地开始的,我想它是直接的) – isaaclw 2012-04-18 16:53:32