我想從我的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