是否可以使用反引号将参数连接到命令行?

时间:2008-09-03 13:13:07

标签: ruby command-line command-line-interface

我想从我的ruby脚本执行OS命令,但我想从ruby变量中添加一个参数。

我知道可以通过使用关键字 system 来实现:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory

但是可以使用“反引号或反引号语法”吗? (我的意思是使用该语法:ls

3 个答案:

答案 0 :(得分:6)

不,这只会连接ls的输出和directory的内容。

但你可以这样做:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`

答案 1 :(得分:6)

`ls #{directory}` 

不是很安全,因为你会遇到包含空格的路径名的问题。

这样做更安全:

directory = '/home/paulgreg/'

args = []
args << "/bin/ls"
args << directory

system(*args)

答案 2 :(得分:1)

Nick是对的,但没有必要分段组装args:

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)