set +e trap 'echo ERRTRAP' ERR false false false echo after falses if ! false; then echo if negation ok fi ! false echo after negation while false; do echo while negation ok done echo after while ./trap2a.sub echo $(false ; echo command substitution) # test behavior of failed commands following `command' builtin command false (command false) command false | echo bar (false) exit 42 | command false command command command false unset FALSE if [ -x /bin/false ]; then FALSE=/bin/false elif [ -x /usr/bin/false ]; then FALSE=/usr/bin/false else FALSE='command false' fi command $FALSE command command command $FALSE