[vox-tech] bash, short circuit logic, and errexit
Harold Lee
harold at hotelling.net
Fri Jan 18 11:50:45 PST 2008
This page seems to clarify that behavior
http://www.ss64.com/bash/set.html
saying that statements in while loops or && chains don't cause the
script to exit on failure. Seems sensible since those are designed to
give different behavior depending on the exit status of commands. You
can always check the $? variable and exit based on that (yeah, makes
the script longer, which is probably what you're trying to avoid with
"set -e" -- sorry).
-Harold
On Jan 18, 2008, at 11:08 AM, Bryan Richter wrote:
> Does everyone agree that the following script shouldn't last forever?
> And if you agree, does it last forever nonetheless?
>
> ----------
> #!/bin/bash
>
> set -e
>
> false && false;
>
> while true; do
> echo "Still here"
> sleep 1
> done
>
> ---------
>
> I discovered that 'diff -q $file1 $file2 && echo "no differences"'
> wasn't ending my script, in spite of having 'set -e'. From the example
> above, which does last forever, it looks like all short-circuit logic
> confounds it.
>
> bash 3.00.15(1)-release
>
> Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
>
>
>
> --
> Bryan Richter
> aka chreekat
> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
More information about the vox-tech
mailing list