Можно ли обнаружить *, который * сигнал ловушки в Bash? [Дубликат
Вопрос
Возможный дубликат:
Определение принятого имени сигнала в скрипте 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 будет имя сигнала.