Domanda

Vorrei eseguire un sistema operativo di comando dal mio script ruby, ma voglio aggiungere un argomento da un rubino variabile.

So che è possibile, mediante l'utilizzo di parole chiave sistema come che :

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

ma è possibile che utilizzando il "virgolette semplici o gli apici inversi sintassi" ?(Voglio dire, utilizzando la sintassi : ls)

È stato utile?

Soluzione

No, sarà solo concatenare l'uscita dal ls e il contenuto di directory.

Ma si può fare questo:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`

Altri suggerimenti

`ls #{directory}` 

non è molto sicuro, perché si sta andando a correre in problemi con i nomi di percorso che contengono spazi.

È più sicuro fare qualcosa di simile a questo:

directory = '/home/paulgreg/'

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

system(*args)

Nick è giusto, ma non c'è bisogno di montare il args a tratti:

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top