Bash regex = ~ operator

Qual è l’operatore =~ chiamato? È usato solo per confrontare il lato destro contro il lato sinistro?

Perché sono necessarie doppie parentesi quadre quando si esegue un test?

vale a dire. [[ $phrase =~ $keyword ]]

Grazie

  1. Qual è l’operatore =~ chiamato?

    Non sono sicuro che abbia un nome. La documentazione di bash la chiama semplicemente l’operatore =~ .

  2. È usato solo per confrontare il lato destro contro il lato sinistro?

    La parte destra è considerata un’espressione regolare estesa. Se il lato sinistro corrisponde, l’operatore restituisce 0 e 1 altrimenti.

  3. Perché sono necessarie doppie parentesi quadre quando si esegue un test?

    Perché =~ è un operatore del comando composto [[ expression ]] .

L’operatore =~ è un operatore di corrispondenza con espressioni regolari. Questo operatore è ispirato dall’uso di Perl dello stesso operatore per la corrispondenza delle espressioni regolari.

[[ ]] È trattato appositamente da bash; considera che una versione aumentata di [ ] costruisce:

  • [ ] è in realtà un comando incorporato nella shell, che, in realtà, può essere implementato come un comando esterno. Guarda il tuo / usr / bin, probabilmente c’è un programma chiamato “[” lì! Strettamente parlando, [ ] non fa parte della syntax di bash.

  • [[ ]] è una parola chiave shell, il che significa che fa parte della syntax della shell. All’interno di questo costrutto, alcuni personaggi riservati cambiano significato. Ad esempio, ( ) significa parentesi come un altro linguaggio di programmazione (non lanciando una subshell per eseguire ciò che è all’interno delle parestie). Un altro esempio è che < and > significa meno e più grande di, non il reindirizzamento della shell. Ciò consente un aspetto più "naturale" delle espressioni logiche, ma può essere fonte di confusione per i programmatori bash dei principianti.

Wirawan