3

Я хотел найти переменную $featuredicon в моих файлах php, и я запустил grep -ir "$featuredicon"

Я понял, что знак доллара - это зарезервированный символ в оболочке. Но что это на самом деле делает? Я изменил свои файлы php? Боюсь, я сделал что-то плохое ...

в следующий раз я буду запускать grep -ir "\$featuredicon"

2 ответа2

4

Причина, по которой каждая строка каждого файла была указана в списке, была вызвана подстановкой переменной вашей оболочки.

Когда вы звоните

grep -ir "$featuredicon" *

bash оценит это. Он найдет переменную $featuredicon и поместит ее в вашу команду. Угадайте, что, скорее всего, $featuredicon ?

Хорошо, ничего. Итак, что вы на самом деле делаете:

grep -ir "" *

И это соответствует каждой строке каждого файла.

Старый ответ

Знак доллара ($) является заполнителем для end-of-line в регулярном выражении (я предполагаю, что то же самое верно для grep).

Если вы хотите найти знак доллара, используйте '\$' .

Не забудьте проверить вопрос StackOverflow: как получить символ доллара ($)?

1

grep не может изменять файлы самостоятельно; это не нанесло ущерба.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .