54 lines
925 B
Text
54 lines
925 B
Text
# builtins with exit status inverted
|
|
|
|
( true )
|
|
echo $?
|
|
( ! true )
|
|
echo $?
|
|
|
|
( false )
|
|
echo $?
|
|
( ! false )
|
|
echo $?
|
|
|
|
# inverting shouldn't affect exit
|
|
(exit 42)
|
|
echo $?
|
|
|
|
( ! exit 42 )
|
|
echo $?
|
|
|
|
# commands requiring an exec with exit status inverted -- broken in bash-2.04
|
|
|
|
( ls > /dev/null 2>&1 )
|
|
echo $?
|
|
( ! ls > /dev/null 2>&1 )
|
|
echo $?
|
|
|
|
touch /tmp/notwrite
|
|
chmod 400 /tmp/notwrite
|
|
|
|
# make sure redirection failures in commands whose exit status is inverted
|
|
# are handled correctly
|
|
|
|
( ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
( ! ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
# now add exit traps, true and false for commands with and without exit
|
|
# status inversion
|
|
|
|
(trap 'false' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
(trap 'false' 0 ; ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
(trap 'true' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
(trap 'true' 0 ; ls > /tmp/notwrite ) 2>/dev/null
|
|
echo $?
|
|
|
|
rm -f /tmp/notwrite
|