Я пытаюсь объединить команду оболочки в скрипте Swift. Фактические команды в которых идет речь, выход gource
поступает на вход ffmpeg
, но вот упрощена, надуманный пример того, что я пытаюсь сделать:Цепочные команды оболочки с трубой в скрипте Swift
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")
Ожидаемый результат:
foo
bar
baz
Фактический выход:
foo
bar
baz
baz | uniq
The |
интерпретируется как часть последнего аргумента. Как я могу объединить команды вместе, чтобы данные переходили от одного к другому, в сценарии Swift? Я пробовал различные комбинации присвоения standardIn
и standardOut
и используя Pipe()
между двумя Process
es, но либо я делаю это неправильно, либо я не соединяю нужные части вместе.
Спасибо! Я потратил слишком много времени, пытаясь разобраться в этом и попытаться найти пути вокруг него. –