如何在Bash中让Ctrl+C始终正确地退出while循环?
如果我在Bash中运行 bash
func() {
while ! foo bar; do :; done
},再执行 func,然后按下Ctrl+C,常常不会退出。
我该如何编写 func,以确保Ctrl+C总能正确终止?
解决方案
#!/bin/bash
function close {
pkill -9 -P $PID
}
trap close SIGINT SIGABRT SIGTERM
function myfoo {
foo bar &
PID=$!
wait $PID
return $?
}
func() {
while myfoo ; do
:
done
}
foo bar 会被放到后台执行,这样按下Ctrl+C时脚本就能退出。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。