我有一个文件,我想在其中插入下面的字符串:
export TRUSTED_PROXIES='"172.16.0.0/12, 172.17.0.0/12"'
[root@sasasas]# echo $TRUSTED_PROXIES
"172.16.0.0/12, 172.17.0.0/12"
但我收到此错误:
[root@sasasas]# sed -i '2i trusted_proxies ='$TRUSTED_PROXIES'' log.conf
sed: can't read 172.17.0.0/12": No such file or directory
但是,如果我使用实际值运行以下命令,它将起作用:
sed -i '2 i trusted_proxies =172.16.0.0/12, 172.17.0.0/12' log.conf
如何转义逗号分隔的环境变量值并插入文件?我正在使用 Linux。
我试过的命令如下
sed -i '2i trusted_proxies ='$TRUSTED_PROXIES'' log.conf
sed -i '2i trusted_proxies ="$TRUSTED_PROXIES"' log.conf
sed -i "2i trusted_proxies ='$TRUSTED_PROXIES'" log.conf
sed -i "2i trusted_proxies ="$TRUSTED_PROXIES"" log.conf
因为您的变量包含空格,并且您将它不带引号传递给它,所以 shell 会尝试扩展它,
sed
实际上看到的是作为文件的第二个值。如果您运行,这可能更容易理解,set -x
因此您可以看到 shell 执行的扩展命令:正如您在上面看到的,正在运行的实际命令是:
因此
sed
正在寻找一个名为'172.17.0.0/12"'
. 解决方法是双引号变量:或者,更简单地说,双引号整个
sed
命令并在打印值周围使用单引号: