是否可以使用反引号将参数连接到命令行?

pau*_*reg 1 ruby command-line command-line-interface

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

我知道可以使用这样的关键字系统:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
Run Code Online (Sandbox Code Playgroud)

但这可能是通过使用"反引号或反引号语法"吗?(我的意思是通过使用语法:ls)

Jor*_*ter 6

不,这只会连接输出ls和内容directory.

但你可以这样做:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
Run Code Online (Sandbox Code Playgroud)


小智 6

`ls #{directory}` 
Run Code Online (Sandbox Code Playgroud)

是不是很安全,因为你将遇到包含空格的路径名的问题.

做这样的事更安全:

directory = '/home/paulgreg/'

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

system(*args)
Run Code Online (Sandbox Code Playgroud)