Ich versuche, den Shell-Befehl in einem Swift-Skript zusammen zu ketten. Die tatsächlichen Befehle in Frage sind die Ausgabe von gource
mit dem Eingang der ffmpeg
geleitet, aber hier ist eine vereinfachte, erfundenes Beispiel von dem, was ich versuche zu tun:Verketten von Shell-Befehlen mit Pipe in einem Swift-Skript
let echo = Process()
echo.launchPath = "/usr/bin/env"
echo.arguments = ["echo", "foo\nbar\nbaz\nbaz", "|", "uniq"]
let pipe = Pipe()
echo.standardOutput = pipe
echo.launch()
echo.waitUntilExit()
// Get the data
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
print(output ?? "no output")
Erwartete Ausgabe:
foo
bar
baz
tatsächliche Ausgabe:
foo
bar
baz
baz | uniq
The |
wird im Rahmen des letzten Arguments interpretiert. Wie kann ich Befehle zusammenführen, so dass Daten in einem Swift-Skript von einem zum nächsten fließen? Ich probierte verschiedene Kombinationen aus standardIn
und standardOut
und Pipe()
zwischen zwei Process
es, aber entweder mache ich es falsch, oder ich verbinde nicht die richtigen Stücke zusammen.
Vielen Dank! Ich habe viel zu lange damit verbracht, das auszuprobieren und nach Wegen zu suchen. –