【发布时间】:2016-05-24 01:15:40
【问题描述】:
我有一个可以做一些工作的脚本。它以适当的方式完成,但需要一段时间才能结束。因为我想模拟“作业正在运行”,所以我添加了一个微调器光标动画。
我在脚本的开头调用它,然后将该函数的 PID 分配给一个变量,当一切完成后,我只需将其终止以停止动画。
#!/bin/bash
spinner &
SPINNER_PID=$!
# a lot of stuff going on here...
# takes some time to finish
kill $SPINNER_PID &>/dev/null
printf "All done"
函数定义:
spinner() {
local i sp n
sp='/-\|'
n=${#sp}
while sleep 0.1; do
printf "%s\b" "${sp:i++%n:1}"
done
}
如果我不打扰,一切都会很好。
想象一下,我想通过调用Control+C 来取消我的长任务。它取消了,但微调器显然仍然有动画,因为它注意到了无限循环。
当脚本被手动取消并且无法到达kill $SPINNER_PID &>/dev/null时,我如何才能杀死它?
【问题讨论】:
标签: bash macos shell cmd command-line-interface