我想在 shell 脚本退出之前进行一些清理,包括使用 Ctrl-C 取消它时。
我尝试了这段代码(在 script.fish
文件中):
function exit_handler --on-event fish_exit
echo exiting!
end
sleep 5 &
sleep 4 &
wait
如果我让此代码正常运行,exit_handler
函数将按预期调用,但如果我使用 Ctrl-C 中断它,则不会打印 exiting!
。即使脚本中止,是否有某种方法可以始终运行事件处理程序?
我在 macOS 12.3 上使用 Fish 3.4.0。
最佳答案
目前还无法在非交互式脚本中捕获 control-C (SIGINT)。这是一个已知的限制。请参阅https://github.com/fish-shell/fish-shell/issues/6649
关于events - 如何在 Fish shell 中设置退出时运行的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71541627/