当我有一个简单的bash函数时,
function useTrap(){
# should print the signal
function handle_error() {
echo "!! useTrap run into trap: ${1}"
}
# http://linuxcommand.org/wss0160.php
trap handle_error SIGINT
local anyExample=Hello
echo "Printing example: $anyExample"
echo "useTrap finishing"
}
并致电useTrap
,我得到了预期的输出:
# -> Printing example: Hello
# -> useTrap finishing
但是当我此后或相当一段时间以后,我在同一外壳press CTRL+C
中看到:
# -> ^C!! useTrap run into trap:
所以我想我在概念上做错了。是否应该在函数中完全使用陷阱?至少可以在脚本(someScript.sh
)中使用某些使用陷阱的函数来删除它们吗?
它是重复的。以防万一某人懒得再次单击,solution是
trap - [signal]