#!/bin/bash trap_with_arg() { func="$1" ; shift for sig ; do echo "$func $sig" trap "$func $sig" "$sig" done } func_trap() { echo "Trapped: $1" echo "Killing ${PID}" kill -9 -${PID} } trap_with_arg func_trap EXIT TERM HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM ./parent.sh & PID=$$ echo "Pid = $PID" sleep 10