繁体   English   中英

单引号转义Ruby

[英]Single quotes escaping Ruby

因此,我使用的Ruby脚本需要连接到一堆服务器并从中获取信息。 我遇到的问题是单引号似乎以某种方式丢失了。 我在这里做错了什么?

command = "grep -E \'^(upstream| *server)\'  /etc/nginx/upstreams.conf | sed -E \'s/_pool.*//g ; s/^upstream //g\'"

puts system("ssh -n   -o 'StrictHostKeyChecking no' #{nginx_stage_servers[0]} #{command}")

我得到的错误:

 $ ruby nx.rb
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `grep -E ^(upstream| *server) /etc/nginx/upstreams.conf'
true

错误的原因是缺少单引号。

使用system(command_string) ,要处理的引号和转义符层太多,因此,最好总是使用Kernel#system的多参数形式来避免处理shell。 这样的事情会减少一些问题:

system('ssh', '-n', '-o', 'StrictHostKeyChecking no', nginx_stage_servers[0], command)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM