Можно ли обнаружить * какой * сигнал ловушки в 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 будет имя сигнала.