grep F 参数不完全匹配

grep F 参数不完全匹配

我正在尝试使用-Fa 上的参数grep来匹配 PHP 变量。当我跑步时:

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

尽管它只是匹配:

['index']

我怎样才能让它也匹配$_SESSION?是否$_SESSION被读取为不存在的环境变量而grep被读取为['index']?我认为这-F会使其读取为纯文本,但也许这只是关闭正则表达式行为。

如果这是这种行为我该怎么做?我不能使用单引号进行封装,因为 PHP 使用单引号; shell 中转义失败:

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

答案1

grep -F不避免 shell 解析。

在双引号内,转义美元符号:

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

单引号可以包含除其他单引号之外的任何内容 - 没有转义字符 - 但是,带引号的字符串可以与转义引号连接:

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

答案2

您还可以将几个不同引用的部分塞在一起以组成一个单词。在这种情况下:

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

相关内容