tech-userlevel archive

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

Re: shell (/bin/sh) pattern matching bugs



Hello,

On Sun, Jun 24, 2018 at 05:11:34PM +0700, Robert Elz wrote:
> Hi all,
> 
> I am soon going to add an ATF test for sh pattern matching (it tests all
> 3 forms, glob expansion, case patterns, and ${var#patern})
> 
>[...]
> 
> [97] var="[:alpha:]"; case "[" in (["$var"]) printf M;; (*) printf X;; esac
> [97] Expected output 'M', received 'X'
> 

Can you explain why you expect success ("M") in this case? From my basic
understanding of how the shell processes, I expect:

- Substitution of the value of $var in (["$var"]) resulting in:
	(["[:alpha:]"]);
- [Suppression of the double quotes? But this doesn't change anything in
the bracket expression];
- Then interpretation of the bracket expression.

But then "[" is not an alpha, so it correctly fails...

Could you explain why you think otherwise?

Best regards,
-- 
        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
                     http://www.kergis.com/
                       http://www.sbfa.fr/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C


Home | Main Index | Thread Index | Old Index