Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sed用一个引号替换字符串_Bash_Ssh_Sed_Escaping - Fatal编程技术网

Bash sed用一个引号替换字符串

Bash sed用一个引号替换字符串,bash,ssh,sed,escaping,Bash,Ssh,Sed,Escaping,我想使用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 &

我想使用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“”命令中的所有字符?

尝试执行以下操作:

$ sed -r "s@('debug'\s*=>\s*).*@\1false@" file
'debug' => false
因此:


sshuser@host我只是在我的服务器上做了一个小测试,这似乎是可行的。您可以尝试在sed命令中使用双引号,但可以将其转义

ssh user@domain.com "sed \"s/'debug' => true/'debug' => false/g\" /path/to/config.php > /path/to/newconfig.php"
ssh user@domain.com "sed \"s/'debug' => true/'debug' => false/g\" /path/to/config.php > /path/to/newconfig.php"