[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Command substitution and exiting from deeply nested subshells
From: |
Greg Wooledge |
Subject: |
Re: Command substitution and exiting from deeply nested subshells |
Date: |
Mon, 7 Oct 2013 11:14:04 -0400 |
User-agent: |
Mutt/1.4.2.3i |
On Mon, Oct 07, 2013 at 11:58:48AM -0300, Carlos Pita wrote:
> > Exiting in a subshell will never cause the parent shell to exit,
> > regardless of depth.
>
> This is not true in general.
> set -e; (exit 1); echo "I don't exist"
In this case, it is the "set -e" which may or may not cause the parent
shell to terminate, depending on which shell you're doing this in.
imadev:~$ bash-4.3 -c 'set -e; (exit 1); echo "I do not exist"'
imadev:~$ bash-4.2 -c 'set -e; (exit 1); echo "I do not exist"'
imadev:~$ bash-4.1 -c 'set -e; (exit 1); echo "I do not exist"'
imadev:~$ bash-4.0 -c 'set -e; (exit 1); echo "I do not exist"'
imadev:~$ bash-3.2 -c 'set -e; (exit 1); echo "I do not exist"'
I do not exist
The exit itself is *not* propagated upward, and please see my previous
comments about the reliability and usefulness of set -e (i.e. none).