
我正在嘗試使用-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 .