2

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

我知道这可以通过使用这样的关键字系统来实现:

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

但这是否可以通过使用“反引号或反引号语法”来实现?(我的意思是使用该语法ls:)

4

3 回答 3

6

不,这只会连接来自的输出lsdirectory.

但是你可以这样做:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
于 2008-09-03T13:16:29.330 回答
6
`ls #{directory}` 

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

这样做更安全:

directory = '/home/paulgreg/'

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

system(*args)
于 2008-09-03T15:09:56.653 回答
1

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

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
于 2008-09-16T12:17:10.670 回答