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:
parent
b157eb13cb
commit
204c7fb229
@ -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;
|
||||||
|
1
shell/ash_test/ash-misc/errexit1.right
Normal file
1
shell/ash_test/ash-misc/errexit1.right
Normal file
@ -0,0 +1 @@
|
|||||||
|
OK
|
5
shell/ash_test/ash-misc/errexit1.tests
Executable file
5
shell/ash_test/ash-misc/errexit1.tests
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
set -e
|
||||||
|
(true)
|
||||||
|
echo OK
|
||||||
|
(false)
|
||||||
|
echo FAIL
|
Loading…
Reference in New Issue
Block a user