是否可以使用反引号将参数连接到命令行?
时间:2020-03-05 18:47:00 来源:igfitidea点击:
我想从我的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)