我想从我的 ruby 脚本执行 OS 命令,但我想从 ruby 变量中添加一个参数。
我知道这可以通过使用这样的关键字系统来实现:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
但这是否可以通过使用“反引号或反引号语法”来实现?(我的意思是使用该语法ls
:)
我想从我的 ruby 脚本执行 OS 命令,但我想从 ruby 变量中添加一个参数。
我知道这可以通过使用这样的关键字系统来实现:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
但这是否可以通过使用“反引号或反引号语法”来实现?(我的意思是使用该语法ls
:)
不,这只会连接来自的输出ls
和directory
.
但是你可以这样做:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
`ls #{directory}`
不是很安全,因为您会遇到路径名中包含空格的问题。
这样做更安全:
directory = '/home/paulgreg/'
args = []
args << "/bin/ls"
args << directory
system(*args)
尼克是对的,但没有必要分段组装 args:
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)