est-il possible de concaténer des arguments sur une ligne de commande en utilisant des guillemets ?

StackOverflow https://stackoverflow.com/questions/41630

Question

Je souhaite exécuter une commande du système d'exploitation à partir de mon script Ruby mais je souhaite ajouter un argument à partir d'une variable Ruby.

Je sais que c'est possible en utilisant un mot clé système comme ça :

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

mais est-ce possible en utilisant la « syntaxe des backquotes ou des backticks » ?(Je veux dire en utilisant cette syntaxe : ls)

Était-ce utile?

La solution

Non, cela concatènera simplement la sortie de ls et le contenu de directory.

Mais tu peux faire ceci :

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

Autres conseils

`ls #{directory}` 

n'est pas très sûr car vous allez rencontrer des problèmes avec les noms de chemin contenant des espaces.

Il est plus sûr de faire quelque chose comme ceci :

directory = '/home/paulgreg/'

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

system(*args)

Nick a raison, mais il n'est pas nécessaire d'assembler les arguments par morceaux :

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top