, , , set -e (== set -o errexit), , script .
, exec'd , exec-ed, -exec'd , , exec'd .
, :
echo "EXEC'D SHELL CHILD"
if sh -e <<'EOF'
true(){ echo true; return 0; }
false(){ echo false; return 1; }
true
false
true
true
EOF
then
echo SUCCESS
else
echo FAILED: $?
fi
echo ===========
echo "NON-EXEC'D SUBSHELL"
if (
true(){ echo true; return 0; }
false(){ echo false; return 1; }
true
false
true
true
)
then
echo SUCCESS
else
echo FAILED: $?
fi
:
EXEC'D SHELL CHILD
true
false
FAILED: 1
===========
NON-EXEC'D SUBSHELL
true
false
true
true
SUCCESS
( /bin/ bash /bin/sh - )
, set -e, , && || return 1 ( ), exec'd, :
sh -ec' command 1
command 2
command 3' || ...
{ comman 1 && command 2 && command 3; } || ...