我有以下 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
被扩展了。