Как убрать ловушку в функции bash?
Когда у меня есть простая функция 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
Но когда я тогда или совсем некоторое время спустя в той же оболочке нажимаюCTRL+C
Я вижу:
# -> ^C!! useTrap run into trap:
Так что я предполагаю, что я делаю что-то концептуально неправильно здесь. Должны ли ловушки использоваться в функциях вообще? Можно ли их удалить как часть какой-то очистки, хотя бы в скрипте (someScript.sh
), которая использует функцию, которая использует ловушки?
Это дубликат. На всякий случай, если кто-то слишком ленив для повторного нажатия, решение
trap - [signal]