Befehlszeilen grep für eine Zeichenfolge mit ‚$‘ drin?
-
12-09-2019 - |
Frage
Ich versuche zu finden, wo zwei Variablen in einem Verzeichnis von Skripten verknüpft werden, aber wenn ich versuche, die folgenden:
grep -lire "$DATA_PATH . $AWARDS_YEAR" *
ich "nicht definierte Variable" Fehler ...
Ich dachte, ich könnte die $ s zu entkommen, indem Sie:
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *
Aber ich bekomme den gleichen Fehler - so, wie grep Sie Strings mit $ s in
Lösung
Tcsh ist ein wenig anders über Variablen als die üblichen Schalen, und es ist die Standardeinstellung auf FreeBSD.
So verwenden nur einfache Anführungszeichen, '$VAR'
oder die $
entkommen außerhalb der Zitate: \$"VAR"
Andere Tipps
Legen Sie es in einfachen Anführungszeichen, mit dem entweichenden Strich:
grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *
Beachten Sie auch, dass der Punkt (.) Ein regulärer Ausdruck Charakter. Wenn Sie nicht wollen, um es, zu entkommen es, auch (oder nicht die Option -e verwenden).
Hier ist eine schöne Referenz mit mehr allgemeinen Informationen.