
Estoy intentando usar el -F
parámetro en a grep
para que coincida con una variable PHP. Cuando corro:
grep -F "$_SESSION['index']" -ri .
aunque solo coincide:
['index']
¿Cómo puedo hacer que también coincida con $_SESSION
? ¿Se $_SESSION
lee como una variable de entorno inexistente y se grep
lee como ['index']
? Pensé que -F
lo haría leer como texto sin formato, aunque tal vez eso simplemente desactive el comportamiento de expresiones regulares.
Si ese es el comportamiento, ¿cómo puedo hacer esto? No puedo usar comillas simples para la encapsulación porque PHP usa single para su; escapar falla en Shell:
grep -F '$_SESSION[\'index\']' -ri .
Respuesta1
grep -F
no evita el análisis de shell.
Entre comillas dobles, escape el signo de dólar:
grep -F "\$_SESSION['index']" -ri .
Las comillas simples pueden contener cualquier cosa excepto otras comillas simples (no hay ningún carácter de escape); sin embargo, la cadena entrecomillada se puede concatenar con comillas escapadas:
grep -F '$_SESSION['\''index'\'']' -ri .
Respuesta2
También puedes juntar varias secciones citadas de forma diferente para formar una palabra. En este caso:
grep -F '$_SESSION'"['index']" -ri .