Hi, another example of this (mis)behaviour:
set -e fn() { false echo "still running" } fn && echo "didn't fail" if fn; then echo "didn't fail"; fi eval fn && echo "didn't fail" while fn; do echo "looping forever"; done I think every single shell misbehaves on those. Bash and zsh do it consistently for all. Dash seems to fail differently on eval. The docs for "-e" say that complex statements disable the -e (or &&, ||, if, while,.. wouldn't work). But I think for functions or { ... } statements that is wrong. The -e should be handled as if a subshell was forked. The first comand failing in the sub statement should abort, set the return code and evaluate the rest of the complex statement. MfG Goswin -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]