从Ruby运行cmd中的命令

时间:2016-06-01 18:47:08

标签: ruby cmd chef

我知道这可能是一个非常简单的问题,但我很难找到解决方案。我在cmd的窗户上工作。我只是想尝试使用这个命令:

find /i \"chef_server_url\" C:/chef/client.rb

我知道命令有效。它只是在我想检查的文件中返回一个url。

我想在代码中执行此操作并在我的代码中返回结果。但我很难格式化字符串,特别是使用转义字符

我正在使用%x[]这样做。理想情况下,我只想说 %x[find /i \"chef_server_url\" C:/chef/client.rb]

c:/chef/client.rb格式不正确,因为它认为/ c和/ c不应该那样

2 个答案:

答案 0 :(得分:0)

您是否尝试从Chef内部访问Chef服务器URL?你可以使用Chef::Config[:chef_server_url],但更深层次的问题是你想要做什么?

答案 1 :(得分:0)

您的问题的简短回答是,在ruby中运行系统命令的方法不止一种:

  • Kernel#system方法采用普通字符串,因此只要您能够在字符串中准确表示命令,它就应该有效。像@Html.EditorForModel()这样的东西应该有效。
  • Backticks会做类似的,看起来应该是这样的:system 'find /i "chef_server_url" C:/chef/client.rb'(换回`backticks`,我不知道如何在StackExchange上格式化。)

我首先建议您获取命令的字符串表示形式find /i "chef_server_url" c:/chef/client.rb,然后将粘贴复制到命令窗口。如果有效,请通过puts发送。

然而,和其他人一样,我怀疑对于你想要解决的潜在问题有一个更好的解决方案。

我不在Windows计算机附近进行测试,所以你必须尝试这些。