est-il possible de concaténer des arguments sur une ligne de commande en utilisant des guillemets ?
-
09-06-2019 - |
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
)
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