Итак, предположим, у меня есть следующий шаблон:
Thisisatest="1"
в файле с именем file
.
И я хочу соответствоватьточныйстрока вышенопо какой-то причине я решил перебрать некоторые числа из списка, использовать их как переменные и попытаться сделать следующее:
Thisisatest="$varhere"
Где указанное выше $varhere
равно указанному выше числу, т.е. 1
. (хотя я упоминал о цикле по числу,этотбыл просто возможным вариантом использования этого в будущем и останется примером)
Теперь, чтобы упростить задачу, предположим, что я хочу сопоставить приведенное вышеточныйшаблонпокаиспользуя указанную выше переменную и ее содержимое:
grep 'Thisisatest="$varhere"' file
Где файл содержит строку Thisisatest="1"
и $varhere
содержит число 1
.
Проблема в том, что это не сработает.потому чтоРасширение переменной не происходит, если она находится между одинарными кавычками (как выше).
Вот неудачная попытка противодействия этому:
- замена содержимого из подстановки переменных
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"
Здесь я использую echo
, чтобы увидеть, выводит ли онверностроку, чтобы ее можно было использовать в качестве входных данных для grep... вместо этого она выводит следующее:
'Thisisatest="'1'"
- Добавить больше цитат
echo "'Thisisatest="${varhere}"'"
выход:
'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''
выход:
Thisisatest="'1'"
Остальное очевидно... Последняя попытка выше, кажется, близка к тому, что я хочу, но все равно не то.
Есть ли способ(ы) сделать вышеизложенное?
решение1
grep "Thisisatest=\"${varhere}\""
У меня работает. " \
" переключает флаг "Я специальный символ" следующего символа через ОДНУ интерпретацию оболочки.