den Code unten vor:Bash doppelte eckige Klammern Regex Ausgabe
$ 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
Oben ist, was ich in Bash-Shell getan haben.
Frage ist warum nicht Linien 5
und 6
Drucken ?
Ich denke, ich kenne bereits die Antwort, aber ich bin auf der Suche nach einer einfachen, leicht zu verdauen Antwort.
Abschließend, wenn eine Variable (in doppelten Anführungszeichen) auf der rechten Seite von =~
verwendet wird, dienen die doppelten Anführungszeichen nur für die variable Erweiterung?
@fedorqui: Danke für die Bearbeitung, viel bessere Weise, es tatsächlich zu setzen – sjsam
Jeder Teil des Operanden auf der rechten Seite von '= ~', die zitiert wird, wird als eine literale Zeichenfolge zugeordnet. –
Mögliches Duplikat von [Warum können String-Literale nicht in bash-regulären Ausdruckstests verwendet werden?] (Http://stackoverflow.com/questions/6665529/why-cant-string-literals-be-used-in-bash-regular) -expression-tests) –