Как я использую строковую переменную (который содержит двойную кавычку) в grep

У меня есть следующий код удара:

DNS_RECORD_NAME="\"_acme-challenge\""
linode-cli domains records-list 1020562 --pretty --json |
            grep '"name": $DNS_RECORD_NAME'

Вывод должен быть похожим на это:

"name": "_acme-challenge"

но я получил пустой результат. Если я изменяю следующую строку

grep '"name": $DNS_RECORD_NAME" 

кому:

grep '"name": "_acme-challenge"'

Я получил корректный вывод.

Но я должен использовать переменную. Как я использую строковую переменную (который содержит двойную кавычку) в grep?

0
задан 22 April 2020 в 05:40

1 ответ

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

grep '"name": $DNS_RECORD_NAME'

попытается соответствовать литеральной строке

"name": $DNS_RECORD_NAME

переменная не расширена.

Чтобы это работало, Вы можете:

grep "\"name\": $DNS_RECORD_NAME"

или

grep '"name": '"$DNS_RECORD_NAME"

здесь переменная $DNS_RECORD_NAME расширен.

3
ответ дан 25 April 2020 в 10:42

Другие вопросы по тегам:

Похожие вопросы: