2017-03-14 10 views
1

私はSwift(macOS)の端末コマンドを実行する方法を探しています。私はaccross thisポストが来たが、私は解決策のいずれかを得るように見えることができない。私はあなたがターミナル(osascript -e 'tell app "loginwindow" to «event aevtrsdn»')から行うことができますように私のアプリからでもMy Macをシャットダウンしようとしていますが、私はそれを行うたびに、私はエラーを取得:posix_spawnできませんでした:エラー13Swift + terminal

私はこのコードを使用しています:

func shell(launchPath: String, arguments: [String] = []) -> (String? , Int32) { 
     let task = Process() 
     task.launchPath = launchPath 
     task.arguments = arguments 

      let pipe = Pipe() 
      task.standardOutput = pipe 
      task.standardError = pipe 
      task.launch() 
      let data = pipe.fileHandleForReading.readDataToEndOfFile() 
      let output = String(data: data, encoding: .utf8) 
      task.waitUntilExit() 
      return (output, task.terminationStatus) 
     } 

、私はこのことから、それを呼び出す:

let z = shell(launchPath: "/usr/bin/osascript", arguments: ["-e", "\'tell app \"loginwindow\" to «event aevtrsdn»\'"]) 

任意のヘルプ?

答えて

1

あなたのコードが正しいですが、単一引用符で第二引数 を囲んではいけません:

シェルからプログラムを実行する際にのみ必要です
let z = shell(launchPath: "/usr/bin/osascript", arguments: ["-e", "tell app \"loginwindow\" to «event aevtrsdn»"]) 

Processは、指定された引数を、生成された実行可能ファイル に直接渡します。