web-dev-qa-db-fra.com

Opérateur Bash regex = ~

Quel est l'opérateur =~ appelé? Est-il uniquement utilisé pour comparer le côté droit contre le côté gauche?

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

c'est à dire. [[ $phrase =~ $keyword ]]

Merci

46
user339946
  1. Quel est l'opérateur =~ appelé?

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

  2. Est-il uniquement utilisé pour comparer le côté droit contre le 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 autrement.

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

    Car =~ est un opérateur du [[ expression ]] commande composée.

45
Carl Norum

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

Le [[ ]] est traité spécialement par bash; considérez qu'une version augmentée de [ ] construction:

  • [ ] est en fait une commande intégrée de Shell, qui, en fait, peut être implémentée comme une commande externe. Regardez votre/usr/bin, il y a très probablement un programme appelé "["! À proprement parler, [ ] ne fait pas partie de la syntaxe bash.

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

Wirawan

16
Wirawan Purwanto