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

Re: regex en bash



Le 22/12/17 à 09:19, Jean-Marc <jean-marc@6jf.be> a écrit :

JM> Thu, 21 Dec 2017 18:13:19 +0100
JM> Daniel Caillibaud <ml@lairdutemps.org> écrivait :
JM> 
JM> > Pourquoi ?
JM> > 
JM> > $ [[ 'abcd' =~ '^ab' ]] && echo ok || echo KO
JM> > KO
JM> > 
JM> > $ [[ 'abcd' =~ 'cd$' ]] && echo ok || echo KO
JM> > KO
JM> > 
JM> > ??  
JM> 
JM> Parce qu'entre guillemets, les caractères ^ et $ sont considérés comme
JM> des caractères normaux.

Merci pour cette explication claire (et merci aussi à Pierre pour l'avoir
pointé).

JM> $ set -x
JM> 
JM> $ [[ 'abcd' =~ '^ab' ]] && echo ok || echo KO
JM> + [[ abcd =~ \^ab ]]
JM> + echo KO
JM> KO
JM> 
JM> $ [[ 'abcd' =~ ^'ab' ]] && echo ok || echo KO
JM> + [[ abcd =~ ^ab ]]
JM> + echo ok
JM> ok
JM> 
JM> $ [[ 'abcd' =~ 'cd$' ]] && echo ok || echo KO
JM> + [[ abcd =~ cd\$ ]]
JM> + echo KO
JM> KO
JM> 
JM> $ [[ 'abcd' =~ 'cd'$ ]] && echo ok || echo KO

C'est surtout ça qui me choque, car $ est normalement toujours interprété
par le shell, comme !, sauf s'il est entre simple quote '

En tout cas des années d'usage de bash m'ont bien ancré dans le crâne que
dès qu'il y a un $ ou un ! faut toujours mettre des ' autour, sinon y'a
toujours un risque que ça donne des résultats inattendus ;-)

Ça va me motiver pour enfin passer à zsh ;-)

-- 
Daniel

Y a pas de grands, y a pas de petits. La bonne longueur des jambes,
c'est quand les pieds touchent bien par terre.
Coluche

Attachment: pgpyg7YeyS85i.pgp
Description: Signature digitale OpenPGP


Reply to: