我制作了一个Bash脚本,为我更新了一些DNS记录(我对Bash来说很新,所以请耐心等待。)
我的新记录如下:
NEW_TXT_CONTENT="v=spf1 a mx ip4:${NEW_IP} ~all"
但正确的DNS TXT记录应该有引号。所以我将我的新记录修改为:
NEW_TXT_CONTENT="\"v=spf1 a mx ip4:${NEW_IP} ~all\""
MySQL部分看起来像这样:
mysql -u root -pPassword dnszones -e "UPDATE records SET content=\"${NEW_TXT_CONTENT}\" WHERE id=\"${TXT_ID}\""
我收到以下错误代码:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'v=spf1 a mx ip4:10.10.10.10 ~all"" WHERE id="27591"' at line 1
看起来数据库收到错误的引号。
还有另一种逃避报价的方法吗?
更新
我发现我是否像这样编写变量
NEW_TXT_CONTENT="'v=spf1 a mx ip4:${NEW_IP} ~all'"
它可以在数据库中写入。但我不想使用单引号。
如果我反之亦然,那么变量${NEW_IP}
将不会被解释。有一个简单的解决方案吗?