Подтвердить что ты не робот

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

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

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

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

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

Что-то вроде:

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

$ trap_with_arg func_trap INT TERM EXIT

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