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)