如何在 grep 中使用字符串变量(包含双引号)

如何在 grep 中使用字符串变量(包含双引号)

我有以下 bash 代码:

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 中使用字符串变量(包含双引号)?

答案1

当您使用单引号时,模式将被视为文字字符串,因此

grep '"name": $DNS_RECORD_NAME'

将尝试匹配文字细绳

"name": $DNS_RECORD_NAME

变量未扩展。

为了使其正常工作,您可以:

grep "\"name\": $DNS_RECORD_NAME"

或者

grep '"name": '"$DNS_RECORD_NAME"

这里变量$DNS_RECORD_NAME被扩展了。

相关内容