如何在Swift中运行shell命令?

如何在Swift中运行shell命令?,swift,macos,shell,Swift,Macos,Shell,我想在Swift中使用NSButton运行shell命令。我使用的IBAaction和execute功能无法工作,请帮助我,谢谢 @IBAction func Openfolder(_ sender: NSButton) { _ = execute(command:"open " + "~/Downloads/") } func execute(command: String) -> String { var arguments:[String] = []

我想在Swift中使用NSButton运行shell命令。我使用的IBAaction和execute功能无法工作,请帮助我,谢谢

    @IBAction func Openfolder(_ sender: NSButton) {
     _ = execute(command:"open " + "~/Downloads/")
}


func execute(command: String) -> String {
     var arguments:[String] = []
     arguments.append("-c")
     arguments.append( command )

     let task = Process()
     task.launchPath = "/bin/sh"
     task.arguments = arguments

     let pipe = Pipe()
     task.standardOutput = pipe
     task.standardError = pipe
     task.launch()
     task.waitUntilExit()
     let data = pipe.fileHandleForReading.readDataToEndOfFile()

     return(NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String)
 }

什么不起作用?为什么忽略结果(潜在错误)?您可以替换意大利面条init
NSString(数据:data,编码:String.encoding.utf8.rawValue)!作为字符串
字符串(数据:数据,编码:.utf8)谢谢你的帮助。我想要实现的结果是,当我单击按钮时,下载文件夹可以打开,但什么也没有发生。我尝试了另一个功能,@IBAction func Openfloder(uu发件人:NSButton){let path=“/bin/sh”let arguments=[“-c”,“open”+“/Users/***/Downloads/”]sender.isEnabled=false let task=Process.launchdProcess(launchPath:path,arguments:arguments)task.waitUntilExit()sender.isEnabled=true}错误结果是LSOpenURLsWithRole()失败,文件的错误为-54 try simpler
let url=url(fileURLWithPath:“/usr/bin/open”)
try?Process.run(url,参数:[“/Users/**/Downloads”],terminationHandler:nil)
。但是,如果应用程序是沙箱,你就不能运行shell脚本,但是你可以用“代码> NSWorkStudio打开下载文件夹。如果你能启用相应的功能,共享。打开(URL)< /代码>。非常感谢!!!!!我关闭了沙箱,命令成功运行。但我不知道沙盒的角色是什么,你能给我一个参考吗?