Si consideri il codice qui sotto:Bash doppie parentesi quadre regex partita problema
$ var1=bingo
$ var2=.ingo
$ if [[ "$var1" =~ $var2 ]]; then echo found; fi
found
$ if [[ $var1 =~ "$var2" ]]; then echo found; fi # line 5
$ if [[ "$var1" =~ "$var2" ]]; then echo found; fi # line 6
$ if [[ $var1 =~ $var2 ]]; then echo found; fi
found
Sopra è quello che ho fatto nella shell bash.
domanda è: perché non l'ha fatto linee 5
e 6
stampa found
?
Penso so già la risposta, ma cerco per un semplice facile da digerire risposta.
Per concludere, quando una variabile (all'interno di virgolette doppie) viene utilizzata sul lato destro di =~
, le doppie virgolette servono solo per l'espansione variabile?
@fedorqui: Grazie per la modifica, il modo migliore per dirla in effetti – sjsam
Qualsiasi parte dell'operando a destra di '= ~' quotata corrisponde a una stringa letterale. –
Eventuali duplicati di [Perché non possono stringhe letterali essere utilizzati in bash test espressioni regolari?] (Http://stackoverflow.com/questions/6665529/why-cant-string-literals-be-used-in-bash-regular -expression-test) –