Chet Ramey wrote: > Toralf Förster wrote: > > I'm wondering why in the example (see below) the right side is > > prefixed with a '\' wheras the left side is unchanged. > >... > > [EMAIL PROTECTED] ~ $ echo "1 2 3 4" | while read a b c d; do [[ > > "$a" = > > "$b" || "$a" = "$c" || "$a" = "$d" ]] && echo oops; done > > + read a b c d > > + echo '1 2 3 4' > > + [[ 1 = \2 ]] > > + [[ 1 = \3 ]] > > + [[ 1 = \4 ]] > > Because the ==/!=/= operators are defined to match the rhs as a pattern > unless it's quoted. You quoted the original string, and the `set -x' > output is supposed to be re-usable as input, so the trace output is > quoted appropriately.
Of course that makes sense for the "==" and "!=" cases. But is that true even for the "=" case? For the "=" case I thought it was "STRING1 = STRING2" and not "STRING = PATTERN". Could you clarify the rules and educate us? Thanks Bob