运行 来自 ruby 脚本的命令行字符串

Run command line strings verbatim from ruby script

我可以通过命令行 运行 ruby 脚本 ruby 'name of file'

在那个文件中,我可以做`puts "this_and_that_string"

但是如何让我放在一起的字符串表现得就像我直接将它们输入命令行一样,以执行命令?

例如some_function cd \/var\/ 在 ruby 脚本中的行为就像我在命令行中输入的一样: cd /var

您可以使用 backticks or system 访问 shell 命令:

system 'cd /var/'

您会注意到它们 return(字符串与退出状态)和打印的内容有些不同。

但请注意,Ruby 函数已经完成了您可能尝试使用 shell 完成的一些操作,例如 Dir.chdir。事实上,上面提到的 shell-outs 启动了一个单独的子进程,它将失去对将 cd 放入目录的跟踪。因此,您必须将包含起始 cd 的命令串在一起,例如:

system 'cd /var; ls'

简短的回答是在 ruby 代码中使用反引号 shell 输出到命令行。对此有一个很好的解释:Calling shell commands from Ruby