On Thu, 17 Feb 2011 22:35:31 +0800 "Clark J. Wang" <dearv...@gmail.com> wrote:
> On Thu, Feb 17, 2011 at 9:20 PM, Andreas Schwab > <sch...@linux-m68k.org>wrote: > > > "Clark J. Wang" <dearv...@gmail.com> writes: > > > > > See following script output: > > > > > > bash-4.2# cat quoted-pattern.sh > > > [[ .a == \.a* ]] && echo 1 # not quoted > > > [[ aa =~ \.a* ]] && echo 2 # quoted > > > > > > [[ aa =~ \a. ]] && echo 3 # not quoted > > > [[ aa =~ \a\. ]] && echo 4 # quoted > > > bash-4.2# bash42 quoted-pattern.sh > > > 1 > > > 3 > > > bash-4.2# > > > > > > From my understanding 1 2 3 4 should all be printed out. > > > > "aa" contains no period, so why should it be matched? > > > > > If it should not be matched why I got 3 printed out? You're regexp matching "aa" against "a." (I believe the spurious backslash is ignored), which of course results in a match. As in: $ echo aa | grep -E 'a.' aa -- D.