Поскольку вы ищете точное совпадение, и вы не хотите, чтобы выражение интерпретировалось grep
, вы должны использовать -F
и одинарные кавычки, чтобы избежать переменная расширяется:
grep -Frl '$GLOBALS["\x61\156\x75\156\x61"]' <filename>
^^ ^
От man grep
:
-F, --fixed-строки
Интерпретировать PATTERN как список фиксированных строк, разделенных новых строк, любой из которых должен быть сопоставлен. (-F задается POSIX.)
Смотрите еще один пример использования -F
вместе с одинарными кавычками:
Мы создаем файл, как это:
$ cat a
hello
${myarray[0]}
bye
И массив:
$ myarray=('hello' 'how' 'are' 'you')
Давайте использовать одинарные кавычки и искать значение:
$ grep '${myarray[0]}' a
$
Давайте использовать фиксированные строки в двойных кавычках -> он получает истолковано!
$ grep -F "${myarray[0]}" a
hello
Давайте использовать -F
и одиночные кавычки:
$ grep -F '${myarray[0]}' a
${myarray[0]} #this works!
Вы в последней версии Баш, который поддерживает ассоциативные массивы, и 'GLOBALS' ссылается на ассоциативный массив? Или вы пытаетесь выполнить поиск буквального текста, равного '$ GLOBALS [" \ x61 \ 156 \ x75 \ 156 \ x61 "]'? – bgoldst