Задать вопрос
@kizijo

Как правильно экранировать одиночные кавычки в linux?

Добрый день.

Хочу выполнить запрос:

grep -rnw '/home/user/' -e '$_GET['s']'

Но не могу понять как экранировать одинарные кавычки в $_GET['s'].

Прошу подсказки. Спасибо.
  • Вопрос задан
  • 7121 просмотр
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Кажется стандартно
\'
Ответ написан
fzfx
@fzfx
18,5 дм
чтобы вставить символ ' внутри строки, нужно разбить эту строку на три подстроки, идущие друг за другом (чтобы работала конкатенация строк): поставить закрывающую одинарную кавычку (сформировав таким образом первую строку), затем экранированную одинарную кавычку (вторая строка), затем открывающую одинарную кавычку (начинающую третью строку).
т. е. thing's превращается в 'thing'\''s'.

grep -rnw '/home/user/' -e '$_GET['\''s'\'']'
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
как экранировать одинарные кавычки

В строке определённой в одинарных кавычках нет возможности ничего экранировать -- все символы являются литералами, а одинарная кавычка заканчивает строку. В строке определённой в двойных кавычках одинарную кавычку можно экранировать бэкслешем, а можно не экранировать -- она не является каким-то специальным символом.

Оригинальный запрос можно написать так:
grep -rnw /home/user/ -e "\$_GET['s']"
но в любом случае он выглядит проблематично: $ в регулярке -- это конец строки, квадратные скобки -- это символ из набора...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы