hush: add support for "set -o pipefail"

function                                             old     new   delta
checkjobs                                            467     517     +50
builtin_set                                          259     286     +27
o_opt_strings                                          -      10     +10
hush_main                                           1011    1013      +2
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/0 up/down: 89/0)               Total: 89 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2010-11-14 02:01:50 +01:00
parent c08c3f5d26
commit 6696eac274
3 changed files with 186 additions and 23 deletions

View File

@@ -0,0 +1,40 @@
Default:
true | true:
0
1
true | false:
1
0
false | true:
0
1
exit 2 | exit 3 | exit 4:
4
0
Pipefail on:
true | true:
0
1
true | false:
1
0
false | true:
1
0
exit 2 | exit 3 | exit 4:
4
0
Pipefail off:
true | true:
0
1
true | false:
1
0
false | true:
0
1
exit 2 | exit 3 | exit 4:
4
0
Done

View File

@@ -0,0 +1,45 @@
echo Default:
echo "true | true:"
true | true; echo $?
! true | true; echo $?
echo "true | false:"
true | false; echo $?
! true | false; echo $?
echo "false | true:"
false | true; echo $?
! false | true; echo $?
echo "exit 2 | exit 3 | exit 4:"
exit 2 | exit 3 | exit 4; echo $?
! exit 2 | exit 3 | exit 4; echo $?
echo Pipefail on:
set -o pipefail
echo "true | true:"
true | true; echo $?
! true | true; echo $?
echo "true | false:"
true | false; echo $?
! true | false; echo $?
echo "false | true:"
false | true; echo $?
! false | true; echo $?
echo "exit 2 | exit 3 | exit 4:"
exit 2 | exit 3 | exit 4; echo $?
! exit 2 | exit 3 | exit 4; echo $?
echo Pipefail off:
set +o pipefail
echo "true | true:"
true | true; echo $?
! true | true; echo $?
echo "true | false:"
true | false; echo $?
! true | false; echo $?
echo "false | true:"
false | true; echo $?
! false | true; echo $?
echo "exit 2 | exit 3 | exit 4:"
exit 2 | exit 3 | exit 4; echo $?
! exit 2 | exit 3 | exit 4; echo $?
echo Done