[英]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.