2

Ruby スクリプトから OS コマンドを実行したいのですが、Ruby 変数から引数を追加したいと考えています。

そのようなキーワードシステムを使用することでそれが可能であることを私は知っています:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory

しかし、「バッククォートまたはバッククォート構文」を使用することで可能ですか? (私はその構文を使用することを意味しますls:)

4

3 に答える 3

6

lsいいえ、それは からの出力と の内容を連結するだけですdirectory

しかし、これを行うことができます:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
于 2008-09-03T13:16:29.330 に答える
6
`ls #{directory}` 

パス名にスペースが含まれていると問題が発生するため、あまり安全ではありません。

次のようにする方が安全です。

directory = '/home/paulgreg/'

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

system(*args)
于 2008-09-03T15:09:56.653 に答える
1

ニックは正しいですが、引数をピースごとに組み立てる必要はありません。

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
于 2008-09-16T12:17:10.670 に答える