我想使用bash脚本修改远程主机上存在的脚本。
我的bash脚本有这样的命令在远程主机上运行sed命令:
ssh user@domain.com "some_command"
我想用sed命令修改一个名为config.php的文件。
我想替换像这样的字符串
'debug' => true
用这个
'debug' => false
sed命令(不起作用)是这样的:
sed 's/'debug'->true/'debug'=>false/g' config.php > newconfig.php
使用什么是正确的sed命令,以及如何让它正确地转义ssh"中的所有字符。 "命令?
答案 0 :(得分:0)
尝试这样做:
$ sed -r "s@('debug'\s*=>\s*).*@\1false@" file
'debug' => false
所以:
ssh user@host<<'EOF'
sed -i -r "s@('debug'\s*=>\s*).*@\1false@" /PATH/TO/config.php
EOF
答案 1 :(得分:0)
我刚刚对我的服务器进行了一些测试,这似乎有效。您可以尝试在sed命令中使用双引号但是将它们转义。
ssh user@domain.com "sed \"s/'debug' => true/'debug' => false/g\" /path/to/config.php > /path/to/newconfig.php"