好的,这真杀了我。我知道我必须对双引号进行转义,但是我无法使下面的脚本bash命令正常工作。
在远程服务器上,以下命令可以正常工作:
sed 's|EX_ROOT=/root/$SERVER|EX_ROOT="/root/$SERVER"|g' /etc/example/config.conf
结果: EX_ROOT =“ / root / $ SERVER”
(这是专门知识)
但是,从这样的其他服务器远程运行命令时:
ssh root@$HWNODEIP "sed 's|EX_ROOT=/root/$SERVER|EX_ROOT="/root/$SERVER"|g' /etc/example/config.conf"
不添加双引号。所以我记得我必须转义双引号。但是我在这里碰壁。无论我尝试什么,都无法获得预期的结果。
示例1:
ssh root@$HWNODEIP "sed 's|EX_ROOT=/root/$SERVER|EX_ROOT="\""/root/$SERVER"\""|g' /etc/example/config.conf"
赠予: EX_ROOT =“ / root /” $ SERVER
($ SERVER不在引号内)
示例2:
ssh root@$HWNODEIP "sed 's|EX_ROOT=/root/$SERVER|EX_ROOT=\"/root/\$SERVER\"|g' /etc/example/config.conf"
赠予: EX_ROOT =“ / root / $ SERVER” $ SERVER
(关闭但仍未达到预期结果)
预期/预期结果:
EX_ROOT="/root/$SERVER"
我不知道我在这里做错了什么。我知道我很亲近,但真的不知道。我尝试了其他一些事情,例如使用更多的引号和尝试进行更多的转义,但是所有操作都没有结果,现在我已经失去了主意...