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
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.
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.
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.
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