Ответ 1
Никаких указаний на документацию о любом аргументе или переменной, удерживающей сигнал, который был захвачен, поэтому вам придется написать оператор функции/ловушки для каждой ловушки, которую вы хотите вести по-разному.
Возможный дубликат:
Идентификация имени принятого сигнала в 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, которая содержит последний принятый сигнал?
Спасибо заранее!
Никаких указаний на документацию о любом аргументе или переменной, удерживающей сигнал, который был захвачен, поэтому вам придется написать оператор функции/ловушки для каждой ловушки, которую вы хотите вести по-разному.
Вы можете реализовать свою собственную функцию ловушки, которая автоматически передает сигнал функции:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
Первым аргументом func_trap будет имя сигнала.