Ruby スクリプトから OS コマンドを実行したいのですが、Ruby 変数から引数を追加したいと考えています。
そのようなキーワードシステムを使用することでそれが可能であることを私は知っています:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
しかし、「バッククォートまたはバッククォート構文」を使用することで可能ですか? (私はその構文を使用することを意味しますls
:)
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)
ニックは正しいですが、引数をピースごとに組み立てる必要はありません。
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)