是否可以使用反引号将参数连接到命令行?
-
09-06-2019 - |
题
我想从 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)
尼克是对的,但不需要分段组装参数:
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
不隶属于 StackOverflow