Swiftスクリプトでシェルコマンドを連鎖しようとしています。問題の実際のコマンドはffmpeg
の入力にパイプgource
の出力ですが、ここで私が何をしようとしているの単純化され、不自然な例です: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
|
は、最後の引数の一部として解釈されています。 Swiftスクリプトで、コマンドを連鎖させて、データを1つから次の順に流すことはできますか? standardIn
とstandardOut
を割り当て、Pipe()
を2つのProcess
の間で使用するというさまざまな組み合わせを試みましたが、間違っているか、適切な部分を一緒に接続していません。
ありがとう!私はこれをやって、それを回避しようとしていた。 –