[vox-tech] bash, short circuit logic, and errexit
Ryan
cjg5ehir02 at sneakemail.com
Fri Jan 18 11:45:40 PST 2008
On Fri, Jan 18, 2008 at 11:08:47AM -0800, Bryan Richter bryan.richter-at-gmail.com |lugod| 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)
You could work around the problem with
diff -q $file1 $file2
echo "no differences"
If it exits on non-zero return. The only problem with doing it that way
is clarity.
More information about the vox-tech
mailing list