hush: implement "return NUM in trap sets $? after trap"
function old new delta builtin_return 47 67 +20 check_and_run_traps 243 259 +16 run_pipe 1583 1597 +14 hush_main 1076 1086 +10 run_list 1054 1055 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 61/0) Total: 61 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
2
shell/hush_test/hush-misc/exitcode_trap3.right
Normal file
2
shell/hush_test/hush-misc/exitcode_trap3.right
Normal file
@@ -0,0 +1,2 @@
|
||||
TERM
|
||||
42:42
|
9
shell/hush_test/hush-misc/exitcode_trap3.tests
Executable file
9
shell/hush_test/hush-misc/exitcode_trap3.tests
Executable file
@@ -0,0 +1,9 @@
|
||||
# "return" in trap should not use last command's exitcode,
|
||||
# but exitcode on entering the trap.
|
||||
trap "echo TERM;return" term
|
||||
f() {
|
||||
(sleep 1; kill $$) &
|
||||
until (exit 42) do (exit 42); done
|
||||
}
|
||||
f
|
||||
echo 42:$?
|
2
shell/hush_test/hush-misc/exitcode_trap4.right
Normal file
2
shell/hush_test/hush-misc/exitcode_trap4.right
Normal file
@@ -0,0 +1,2 @@
|
||||
TERM
|
||||
11:11
|
8
shell/hush_test/hush-misc/exitcode_trap4.tests
Executable file
8
shell/hush_test/hush-misc/exitcode_trap4.tests
Executable file
@@ -0,0 +1,8 @@
|
||||
# "return" in trap sets $? after trap
|
||||
trap "echo TERM;return 11" term
|
||||
f() {
|
||||
(sleep 1; kill $$) &
|
||||
until (exit 42) do (exit 42); done
|
||||
}
|
||||
f
|
||||
echo 11:$?
|
3
shell/hush_test/hush-misc/exitcode_trap5.right
Normal file
3
shell/hush_test/hush-misc/exitcode_trap5.right
Normal file
@@ -0,0 +1,3 @@
|
||||
TERM
|
||||
Nested
|
||||
Zero:0
|
10
shell/hush_test/hush-misc/exitcode_trap5.tests
Executable file
10
shell/hush_test/hush-misc/exitcode_trap5.tests
Executable file
@@ -0,0 +1,10 @@
|
||||
# "return" in trap sets $? after trap...
|
||||
# ...but not a nested one!
|
||||
g() { echo Nested; return 22; }
|
||||
trap "echo TERM;false;g" term
|
||||
f() {
|
||||
(kill $$) &
|
||||
sleep 1
|
||||
}
|
||||
f
|
||||
echo Zero:$?
|
Reference in New Issue
Block a user