Можно ли обнаружить * какой * сигнал ловушки в bash? [дубликат]

Возможные Дубликаты:
идентификация имени принятого сигнала в скрипте оболочки bash

при использовании чего-то вроде trap func_trap INT TERM EXIT С:

func_trap () {
    ...some commands...
}

есть ли способ в функциональном блоке обнаружить , который ловушка назвала это?

что-то типа:

func_trap () {
    if signal = INT; then
        # do this
    else
        # do that
    fi
}

или мне нужно написать отдельную функцию для каждого типа ловушки, что делает что-то другой? Есть ли переменная bash, которая содержит последний полученный сигнал?

спасибо заранее!

2 ответов


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


вы можете реализовать свою собственную функцию trap, которая автоматически передает сигнал функции:

trap_with_arg() {
    func="" ; shift
    for sig ; do
        trap "$func $sig" "$sig"
    done
}

$ trap_with_arg func_trap INT TERM EXIT

первым аргументом func_trap будет имя сигнала.