Подтвердить что ты не робот

Переменная оболочки в регулярном выражении grep

Я пытаюсь использовать переменную в регулярном выражении grep. Я просто отправлю пример неудачи, и, возможно, кто-то может предложить, как заставить переменную оцениваться при запуске команды grep. Я также пробовал ${var}.

$ string="test this"
$ var="test"
$ echo $string | grep '^$var'
$ 

Так как мое регулярное выражение должно соответствовать строкам, начинающимся с "test", оно должно печатать строку, эхо-эхо через нее.

$ echo $string
test this
$
4b9b3361

Ответ 1

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

Кроме того, вам может понадобиться поместить вашу переменную в фигурные скобки ${var}, чтобы помочь отделить ее от остальной части шаблона.

Пример:

$ string="test this"
$ var="test"
$ echo $string | grep "^$var"