Grep F 매개변수가 완전하게 일치하지 않음

Grep F 매개변수가 완전하게 일치하지 않음

PHP 변수와 일치시키기 위해 -F매개변수를 사용하려고 합니다 . grep내가 실행할 때 :

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 .

관련 정보