我想从我的ruby脚本执行操作系统命令,但我想从一个ruby变量添加一个参数。是否可以使用反引号将参数连接到命令行?
我知道这是可以通过使用关键字系统这样的:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
但是,可以通过使用“反引号或反引号语法”? (我的意思是使用该语法:ls
)
我想从我的ruby脚本执行操作系统命令,但我想从一个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)
你会如何读取系统调用的输出? – 2014-09-10 00:27:55