Шаблон Grep, который содержит двойные кавычки и подстановку переменных, заключенную в одинарные кавычки

Шаблон Grep, который содержит двойные кавычки и подстановку переменных, заключенную в одинарные кавычки

Итак, предположим, у меня есть следующий шаблон:

Thisisatest="1"

в файле с именем file.

И я хочу соответствоватьточныйстрока вышенопо какой-то причине я решил перебрать некоторые числа из списка, использовать их как переменные и попытаться сделать следующее:

Thisisatest="$varhere"

Где указанное выше $varhereравно указанному выше числу, т.е. 1. (хотя я упоминал о цикле по числу,этотбыл просто возможным вариантом использования этого в будущем и останется примером)

Теперь, чтобы упростить задачу, предположим, что я хочу сопоставить приведенное вышеточныйшаблонпокаиспользуя указанную выше переменную и ее содержимое:

grep 'Thisisatest="$varhere"' file

Где файл содержит строку Thisisatest="1"и $varhereсодержит число 1.

Проблема в том, что это не сработает.потому чтоРасширение переменной не происходит, если она находится между одинарными кавычками (как выше).

Вот неудачная попытка противодействия этому:

  1. замена содержимого из подстановки переменных
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"

Здесь я использую echo, чтобы увидеть, выводит ли онверностроку, чтобы ее можно было использовать в качестве входных данных для grep... вместо этого она выводит следующее:

'Thisisatest="'1'"
  1. Добавить больше цитат
echo "'Thisisatest="${varhere}"'"

выход:

'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''

выход:

Thisisatest="'1'"

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

Есть ли способ(ы) сделать вышеизложенное?

решение1

grep "Thisisatest=\"${varhere}\""

У меня работает. " \" переключает флаг "Я специальный символ" следующего символа через ОДНУ интерпретацию оболочки.

Связанный контент