シェルスクリプトの実行が必要なOS X Appを作成しています。ここに私のSWIFTコードです:NSTask/bin/echo:/ bin/echo:バイナリファイルを実行できません
func runTask(arguments: [String]) {
output.string = ""
task = NSTask()
task.launchPath = "/bin/bash"
task.arguments = arguments;
errorPipe = NSPipe()
outputPipe = NSPipe()
task.standardError = errorPipe
task.standardOutput = outputPipe
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(didCompleteReadingFileHandle(_:)), name: NSFileHandleReadCompletionNotification, object: task.standardOutput!.fileHandleForReading)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(didCompleteReadingFileHandle(_:)), name: NSFileHandleReadCompletionNotification, object: task.standardError!.fileHandleForReading)
errorPipe.fileHandleForReading.readInBackgroundAndNotify()
outputPipe.fileHandleForReading.readInBackgroundAndNotify()
task.launch()
}
func didCompleteReadingFileHandle(sender: NSNotification) {
let data: NSData = sender.userInfo![NSFileHandleNotificationDataItem] as! NSData;
let string = NSString(data: data, encoding: NSUTF8StringEncoding)!
// The output property is a NSTextView object
output.string?.appendContentsOf(String(string))
}
は今、私はrunTask
メソッドを呼び出してみました:
runTask(["/bin/echo", "1234"])
それは次のエラーを言う:
/bin/echo: /bin/echo: cannot execute binary file
は、今私は戻ってターミナルに行き、でタイプecho 1234
これは問題なく完璧に動作しますが、これをどのように機能させるのですか?ありがとう。