Параметр Grep F не полностью совпадает

Параметр Grep F не полностью совпадает

Я пытаюсь использовать -Fпараметр grepдля сопоставления переменной PHP. Когда я запускаю:

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

хотя это только соответствие:

['index']

Как мне сделать так, чтобы он также соответствовал $_SESSION? $_SESSIONЧитается ли как несуществующая переменная среды, а читается grepкак ['index']? Я думал, что -Fзаставит его читаться как обычный текст, может быть, это просто отключает поведение регулярных выражений.

Если это поведение, как мне это сделать? Я не могу использовать одинарные кавычки для инкапсуляции, потому что PHP использует одинарные для своего; экранирование не удается в оболочке:

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

решение1

grep -Fне избегает анализа оболочки.

Внутри двойных кавычек экранируйте знак доллара:

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

Одинарные кавычки могут содержать что угодно, кроме других одинарных кавычек — экранирующего символа нет — однако заключенную в кавычки строку можно объединить с экранированными кавычками:

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

решение2

Вы также можете соединить несколько по-разному цитируемых разделов вместе, чтобы получилось одно слово. В этом случае:

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

Связанный контент