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

StackOverflow https://stackoverflow.com/questions/2175647

  •  24-09-2019
  •  | 
  •  

Вопрос

Возможный дубликат:
Определение принятого имени сигнала в скрипте Shell Bash

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

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

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

Что-то типа:

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

$ trap_with_arg func_trap INT TERM EXIT

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top