grep командной строки для строки с «$» в ней?
-
12-09-2019 - |
Вопрос
Я пытаюсь найти место объединения двух переменных в каталоге сценариев, но когда я пытаюсь сделать следующее:
grep -lire "$DATA_PATH . $AWARDS_YEAR" *
Я получаю ошибки «неопределенная переменная»...
Я думал, что смогу избежать $s, используя:
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *
Но я получаю ту же ошибку. Как же найти строки с $s?
Решение
Tcsh немного отличается от переменных в обычных оболочках и используется по умолчанию во FreeBSD.
Итак, просто используйте одинарные кавычки, '$VAR'
, или избежать $
вне кавычек: \$"VAR"
Другие советы
Заключите его в одинарные кавычки с экранирующей косой чертой:
grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *
Также обратите внимание, что точка (.) является символом регулярного выражения.Если вы не хотите, чтобы это было так, избегайте и этого (или не используйте опцию -e).
Вот хорошая ссылка с более общей информацией.