停止bash脚本时运行命令

时间:2008-10-30 09:58:13

标签: bash macos

在用户停止脚本时(使用ctrl -c),如何在bash脚本中执行命令?

目前,我有这个:

afplay file.mp3

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

但我希望它在用户完成后执行killall afplay,无论它是command-c还是其他按键。

3 个答案:

答案 0 :(得分:9)

trap 'killall afplay' EXIT

答案 1 :(得分:4)

使用trap

trap "kill $pid" INT TERM EXIT

还要避免使用killallpkill,因为它可以杀死不相关的进程(例如,来自脚本的另一个实例,甚至是不同的脚本)。相反,将玩家的PID置于变量中并仅杀死该PID。

答案 2 :(得分:2)

您需要在bash脚本中添加trap语句:

trap 'killall afplay' EXIT

但是请注意,如果bash进程发送KILL信号(9),这将无效,因为进程无法拦截该信号。