我正在尝试使用-F
a 上的参数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 .