Is it possible to detect *which* trap signal in bash?
12,759
Solution 1
No documentation hints of any argument or variable holding the signal that was trapped, so you'll have to write a function/trap statement for each trap you want to behave differently.
Solution 2
You can implement your own trap function that automatically passes the signal to the function:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
The first argument to func_trap will be the name of the signal.
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Author by
Admin
Updated on June 06, 2022Comments
-
Admin about 2 years
Possible Duplicate:
Identifying received signal name in bash shell scriptWhen using something like
trap func_trap INT TERM EXIT
with:func_trap () { ...some commands... }
Is there a way in the function block to detect which trap has called it?
Something like:
func_trap () { if signal = INT; then # do this else # do that fi }
Or do I need to write a separate function for each trap type that does something different? Is there a bash variable that holds the latest received signal?
Thanks in advance!