[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Defect in manual section "Conditional Constructs" / case

From: Dietmar Schindler
Subject: Re: Defect in manual section "Conditional Constructs" / case
Date: Wed, 25 Aug 2021 11:18:21 +0200

> sent: 25. August 2021 02:14
> from: "Lawrence Velázquez"
> Cc: bug-bash@gnu.org
> On Tue, Aug 24, 2021, at 4:44 PM, Dietmar P. Schindler wrote:
> > Doesn't the example I gave above show that quotes are removed? If they
> > weren't, how could word aa with pattern a""a constitute a match?
> The quotes are handled by the matching process itself, *not* as
> part of the usual shell expansions. …

I didn't say that quotes were handled "as part of the usual shell expansions" 
(on the contrary, in my original message I wrote "this expansion series ["Shell 
Expansions" performed on the command line] is not performed on the case 
command's _word_ and patterns"), so I'm sorry I don't get why you are 
emphasizing this.

> … Otherwise these patterns would
> be equivalent, but they're not.
> % cat /tmp/foo.sh
> case $1 in
> 'a?a') echo one ;;
> a?a) echo two ;;
> esac
> % bash /tmp/foo.sh 'a?a'
> one
> % bash /tmp/foo.sh aaa
> two

This example nicely shows that I was wrong suggesting that _pattern_ undergoes 
quote removal before matching is attempted - thank you for that!
It also tells me that single and double quotes are handled analogously to an 
escaping backslash ("discarded when matching"); although one could call this 
self-evident, I was misguided by this being explicitly documented for 
backslash, but not for quotes.
Best regards!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]