单引号转义Ruby

时间:2018-10-02 18:16:18

标签: ruby escaping single-quotes

因此,我正在使用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

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

1 个答案:

答案 0 :(得分:2)

使用 > filter circprime [2..100] [] 时,要处理的引号和转义符太多了,所以最好总是使用Kernel#system的多参数形式来避免处理shell。这样的事情就不会那么麻烦了:

system(command_string)