Проверьте, установлена ​​ли ловушка в Bash

Есть ли способ проверить, что trapбыли установлены (в текущем сеансе или сценарии) в Bash?

В идеале я бы хотел получить список сигналов, которые имеют trap назначен им, но если это невозможно, я могу просто проверить каждый сигнал в отдельности.

2 ответа

Решение

Да

Вы можете увидеть либо все ловушки, либо ловушки для определенного сигнала:

$ trap            # show all traps for all signals
$ trap -p SIGINT  # only show traps for SIGINT
$ trap -p EXIT    # only show traps for EXIT

Давайте определим функцию следующим образом:

$ function f
> {
> echo trapped
> }

Давайте установим ловушку на эту функцию, назначенную SIGINT

$ trap f SIGINT

Давайте перечислим множество ловушек:

$ trap
trap -- 'f' SIGINT
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU
Другие вопросы по тегам