ash: exit after subshell error when errexit option is set

When "set -e" option is on, shell must exit when any command fails,
including compound commands of the form (compound-list) executed in a
subshell. Bash and dash shells have this behaviour.

Also add a corresponding testcase.

Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Rostislav Skudnov 2016-09-16 19:04:02 +00:00 committed by Denys Vlasenko
parent b157eb13cb
commit 204c7fb229
3 changed files with 8 additions and 0 deletions

View File

@ -8408,6 +8408,8 @@ evaltree(union node *n, int flags)
evalfn = evalloop; evalfn = evalloop;
goto calleval; goto calleval;
case NSUBSHELL: case NSUBSHELL:
evalfn = evalsubshell;
goto checkexit;
case NBACKGND: case NBACKGND:
evalfn = evalsubshell; evalfn = evalsubshell;
goto calleval; goto calleval;

View File

@ -0,0 +1 @@
OK

View File

@ -0,0 +1,5 @@
set -e
(true)
echo OK
(false)
echo FAIL