运行 来自 Ruby 的 cmd 命令
Run command in cmd from Ruby
我知道这可能是一个非常简单的问题,但我很难找到解决方案。我正在 cmd 中处理 windows。我只是想使用这个命令:
find /i \"chef_server_url\" C:/chef/client.rb
我知道命令有效。它只是 return 在我要检查的文件中 url。
我想在代码中执行此操作,return 在我的代码中执行结果。但是我很难格式化字符串,尤其是使用转义字符
我正在使用 %x[]
这样做。所以理想情况下我只想说
%x[find /i \"chef_server_url\" C:/chef/client.rb]
但是 c:/chef/client.rb
不会正确格式化,因为它认为 /c 和 /c 不应该是那样的
您是否正在尝试从 Chef 内部访问 Chef 服务器 URL?您可以使用 Chef::Config[:chef_server_url]
但更深层次的问题是您要做什么?
对您的问题的简短回答是 运行 ruby 中的系统命令有不止一种方法:
- Kernel#system 方法采用纯字符串,因此只要您的命令可以准确地用字符串表示,它就应该可以工作。
system 'find /i "chef_server_url" C:/chef/client.rb'
之类的东西应该可以。
- 反引号会做类似的事情,它应该看起来像这样:
find /i "chef_server_url" c:/chef/client.rb
(用 `backticks` 包装,我不确定如何在 StackExchange 上格式化)。
我首先建议获取命令的字符串表示形式,puts
将其复制粘贴到命令 window。如果有效,则通过 system
.
发送
但是,和这里的其他人一样,我怀疑对于您要解决的潜在问题有更好的解决方案。
我不在 windows 测试计算机附近,所以你必须用这些进行试验。
我知道这可能是一个非常简单的问题,但我很难找到解决方案。我正在 cmd 中处理 windows。我只是想使用这个命令:
find /i \"chef_server_url\" C:/chef/client.rb
我知道命令有效。它只是 return 在我要检查的文件中 url。
我想在代码中执行此操作,return 在我的代码中执行结果。但是我很难格式化字符串,尤其是使用转义字符
我正在使用 %x[]
这样做。所以理想情况下我只想说
%x[find /i \"chef_server_url\" C:/chef/client.rb]
但是 c:/chef/client.rb
不会正确格式化,因为它认为 /c 和 /c 不应该是那样的
您是否正在尝试从 Chef 内部访问 Chef 服务器 URL?您可以使用 Chef::Config[:chef_server_url]
但更深层次的问题是您要做什么?
对您的问题的简短回答是 运行 ruby 中的系统命令有不止一种方法:
- Kernel#system 方法采用纯字符串,因此只要您的命令可以准确地用字符串表示,它就应该可以工作。
system 'find /i "chef_server_url" C:/chef/client.rb'
之类的东西应该可以。 - 反引号会做类似的事情,它应该看起来像这样:
find /i "chef_server_url" c:/chef/client.rb
(用 `backticks` 包装,我不确定如何在 StackExchange 上格式化)。
我首先建议获取命令的字符串表示形式,puts
将其复制粘贴到命令 window。如果有效,则通过 system
.
但是,和这里的其他人一样,我怀疑对于您要解决的潜在问题有更好的解决方案。
我不在 windows 测试计算机附近,所以你必须用这些进行试验。