109 votes

Bash regex =~ opérateur

Quel est l'opérateur =~ appelé? Est-il seulement utilisé pour comparer le côté droit par rapport au côté gauche?

Pourquoi les doubles crochets sont-ils nécessaires lors de l'exécution d'un test?

ie. [[ $phrase =~ $keyword ]]

Merci

111voto

Carl Norum Points 114072
  1. Comment s'appelle l'opérateur =~ ?

    Je ne suis pas sûr qu'il ait un nom. La documentation de bash l'appelle simplement l'opérateur =~.

  2. Est-il uniquement utilisé pour comparer le côté droit par rapport au côté gauche ?

    Le côté droit est considéré comme une expression régulière étendue. Si le côté gauche correspond, l'opérateur renvoie 0, et 1 sinon.

  3. Pourquoi les doubles crochets sont-ils requis lors de l'exécution d'un test ?

    Parce que =~ est un opérateur de la commande composée [[ expression ]].

56voto

Wirawan Purwanto Points 312

L'opérateur =~ est un opérateur de correspondance d'expressions régulières. Cet opérateur est inspiré de l'utilisation par Perl du même opérateur pour la correspondance d'expressions régulières.

Le [[ ]] est traité de manière spéciale par bash; considérez-le comme une version augmentée de la construction [ ]:

  • [ ] est en fait une commande intégrée au shell, qui peut également être implémentée en tant que commande externe. Regardez dans votre /usr/bin, il y a probablement un programme appelé "[" là! Strictement parlant, [ ] ne fait pas partie de la syntaxe de bash.

  • [[ ]] est un mot-clé shell, ce qui signifie qu'il fait partie de la syntaxe shell. À l'intérieur de cette construction, certains caractères réservés changent de signification. Par exemple, ( ) signifie des parenthèses comme dans d'autres langages de programmation (ne lançant pas un sous-shell pour exécuter ce qui se trouve à l'intérieur des parenthèses). Un autre exemple est que < et > signifient inférieur à et supérieur à, et non redirection shell. Cela permet une apparence plus "naturelle" des expressions logiques, mais cela peut être déroutant pour des programmeurs bash novices.

Wirawan

7voto

Anthony Rutledge Points 280

L'opérateur =~ est l'opérateur de correspondance de motif. Il n'existait pas dans le shell Bourne d'origine, où test, ou internalement [ ], était utilisé pour les conditionnels.

La commande let, ou [[ ]] internement, offre davantage de fonctionnalités que test, y compris des capacités de correspondance de motifs. C'est pourquoi vous devez utiliser [[ ]] au lieu de [ ] lors de l'utilisation de =~.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X