簡體   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