Grep F-Parameter nicht vollständig übereinstimmend

Grep F-Parameter nicht vollständig übereinstimmend

Ich versuche, den -FParameter zu verwenden grep, um eine PHP-Variable abzugleichen. Wenn ich Folgendes ausführe:

grep -F "$_SESSION['index']" -ri .

obwohl es nur übereinstimmt:

['index']

Wie kann ich erreichen, dass es auch mit übereinstimmt $_SESSION? Wird das $_SESSIONals nicht vorhandene Umgebungsvariable gelesen und das grepals ['index']? Ich dachte, das -Fwürde dafür sorgen, dass es als einfacher Text gelesen wird, aber vielleicht schaltet das einfach das Regex-Verhalten ab.

Wenn das das Verhalten ist, wie kann ich das tun? Ich kann keine einfachen Anführungszeichen für die Kapselung verwenden, da PHP dafür einfache verwendet; das Escapen schlägt in der Shell fehl:

grep -F '$_SESSION[\'index\']' -ri .

Antwort1

grep -Fvermeidet keine Shell-Analyse.

Escapen Sie das Dollarzeichen innerhalb von Anführungszeichen:

grep -F "\$_SESSION['index']" -ri .

Einfache Anführungszeichen können alles außer anderen einfachen Anführungszeichen enthalten – es gibt kein Escape-Zeichen. Die zitierte Zeichenfolge kann jedoch mit Escape-Anführungszeichen verkettet werden:

grep -F '$_SESSION['\''index'\'']' -ri .

Antwort2

Sie können auch mehrere unterschiedlich zitierte Abschnitte zu einem Wort zusammenfügen. In diesem Fall:

grep -F '$_SESSION'"['index']" -ri .

verwandte Informationen