On Wed, 30 Jun 2010, Clark J. Wang wrote: > I have a bash script like this: > > #!/bin/bash > > trap 'echo killed by SIGALRM; exit 1' ALRM > > function wait_kill() > { > sleep 5 > kill -ALRM $$ > } > > wait_kill & > > sleep 3600 > > ### END OF THE SCRIPT ### > > It does not work as I expected. The running script was not terminated after > 5 seconds. So what's wrong here?
$$ refers to the subshell. Try: trap 'echo killed by SIGALRM; exit 1' ALRM function wait_kill() { sleep 5 kill -ALRM $pid } pid=$$ wait_kill & sleep 3600 -- Chris F.A. Johnson, <http://cfajohnson.com> Author: Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress) Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)