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)

War es hilfreich?

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
scroll top