ruby - 转义 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)
推荐阅读
- image - React Native Share View as an Image
- javascript - 如何根据 JS 或 jQuery 中的 CSS 属性过滤 getElement
- flutter - Flutter,如何设置最大高度以列出视图项
- python - Django/Bootstrap 格式化问题
- google-sheets-formula - Googlesheet : ARRAYFORMULA 与 CONCATENATE
- excel - Excel VBA:范围类的排序方法失败
- python - 试图从一页抓取多个 URL
- python - 在 Python 中创建等高线增强的漏斗图
- javascript - 获取 API 响应时在 javascript 文件中获取空白响应
- windows - Powershell:每分钟任务