chris@mimsy.UUCP (Chris Torek) (10/08/88)
>In article <639@eiger.iis.UUCP> prl@iis.UUCP (Peter Lamb) writes: >>And just to support Chris' case that sh -e should not exit if the >>command in a conditional returns non-zero status; >> >>if you have a conditional, it is usually because you *EXPECT* the >>thing to fail sometimes, otherwise you wouldn't have bothered! In article <831@philmds.UUCP> leo@philmds.UUCP (Leo de Wit) writes: >Of course, but you must take two other things into account: >1) the conditional is not the exit status of a (1) command, but of a >command list. I can even write something down like: > >if ><shell script here> >then ><other stuff here> >fi > >and put a whole shell script into the conditional clause (not that this >is common practice). Now do you want -e to be turned off for the whole >clause (see also beneath) ?? Yes. If you meant for -e to be in effect for most of the test part, you can write either of the following: <most of script> if <last of script> then <other stuff> fi or, more generally, if (set -e; <most of script>); last of script then <other stuff> fi since in SysV and in with my changes the suppression of error-exit is actually implemented by temporarily turning off `-e'. Curiously, this turns up a minor bug in the SysV sh in SunOS: $ set -e; echo $- se $ if set -; echo $-; then echo ok; fi s ok $ echo $-; set -; echo $- s se $ The code that fiddles with the internal `-e' flag does not also fiddle with $-, but `set -' resets $- per the current flags, so $- does not always reflect the actual settings. >2) -e is used when successfull execution of the commands in a script is >a must; take for instance the 'Make' example. Why would the commands in >the commandlist of a conditional clause suddenly be all that different? Well, it is *conditional*.... >A minimal change to the meaning of -e ...: >The last command of the conditional clause's command list should not >cause an exit if it fails and -e is set. Alas, this is hard; temporarily suppressing -e is much easier. Guess which wins :-) . -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris