Ist es möglich, Argumente mithilfe von Backquotes mit einer Befehlszeile zu verknüpfen?
-
09-06-2019 - |
Frage
Ich möchte einen Betriebssystembefehl aus meinem Ruby-Skript ausführen, aber ich möchte ein Argument aus einer Ruby-Variablen hinzufügen.
Ich weiß, dass das durch die Verwendung von Schlüsselwörtern möglich ist System so wie das :
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
Aber ist das mit der „Backquotes- oder Backticks-Syntax“ möglich?(Ich meine mit dieser Syntax: ls
)
Lösung
Nein, dadurch wird nur die Ausgabe von verkettet ls
und der Inhalt von directory
.
Aber Sie können Folgendes tun:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
Andere Tipps
`ls #{directory}`
ist nicht sehr sicher, da Sie Probleme mit Pfadnamen bekommen, die Leerzeichen enthalten.
Es ist sicherer, so etwas zu tun:
directory = '/home/paulgreg/'
args = []
args << "/bin/ls"
args << directory
system(*args)
Nick hat recht, aber es ist nicht nötig, die Argumente stückweise zusammenzusetzen:
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow