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.
---
 shell/ash.c                            | 2 ++
 shell/ash_test/ash-misc/errexit1.right | 1 +
 shell/ash_test/ash-misc/errexit1.tests | 5 +++++
 3 files changed, 8 insertions(+)
 create mode 100644 shell/ash_test/ash-misc/errexit1.right
 create mode 100755 shell/ash_test/ash-misc/errexit1.tests

diff --git a/shell/ash.c b/shell/ash.c
index 789a81c..25fc04c 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8408,6 +8408,8 @@ evaltree(union node *n, int flags)
                evalfn = evalloop;
                goto calleval;
        case NSUBSHELL:
+               evalfn = evalsubshell;
+               goto checkexit;
        case NBACKGND:
                evalfn = evalsubshell;
                goto calleval;
diff --git a/shell/ash_test/ash-misc/errexit1.right 
b/shell/ash_test/ash-misc/errexit1.right
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/shell/ash_test/ash-misc/errexit1.right
@@ -0,0 +1 @@
+OK
diff --git a/shell/ash_test/ash-misc/errexit1.tests 
b/shell/ash_test/ash-misc/errexit1.tests
new file mode 100755
index 0000000..7b4a156
--- /dev/null
+++ b/shell/ash_test/ash-misc/errexit1.tests
@@ -0,0 +1,5 @@
+set -e
+(true)
+echo OK
+(false)
+echo FAIL
-- 
2.1.4

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to