
Estou tentando usar o -F
parâmetro em a grep
para corresponder a uma variável PHP. Quando corro:
grep -F "$_SESSION['index']" -ri .
embora seja apenas correspondente:
['index']
Como posso fazer com que também corresponda ao $_SESSION
? O que $_SESSION
está sendo lido como uma variável de ambiente inexistente e grep
é lido como ['index']
? Achei que isso -F
faria com que fosse lido como texto simples, mas talvez isso apenas desative o comportamento regex.
Se esse é o comportamento, como posso fazer isso? Não posso usar aspas simples para o encapsulamento porque o PHP usa single para isso; escapar falha no shell:
grep -F '$_SESSION[\'index\']' -ri .
Responder1
grep -F
não evita a análise do shell.
Entre aspas duplas, escape do cifrão:
grep -F "\$_SESSION['index']" -ri .
As aspas simples podem conter qualquer coisa, exceto outras aspas simples – não há caractere de escape – no entanto, a string entre aspas pode ser concatenada com aspas de escape:
grep -F '$_SESSION['\''index'\'']' -ri .
Responder2
Você também pode juntar várias seções com citações diferentes para formar uma palavra. Neste caso:
grep -F '$_SESSION'"['index']" -ri .