在Swift中运行Shell命令

时间:2015-07-15 20:06:04

标签: macos swift shell applescript

我正在尝试构建一个可以运行一些shell命令来安装用户请求的VPN的swift OSX应用程序。我尝试使用NSAppleScript但每次尝试使用Admin权限运行时都会出错,因此我决定使用NSTask调用将以管理员身份运行的苹果脚本并安装VPN。

为了通过NSTask调试获取在swift中运行的shell命令,我创建了一个测试脚本文件,它只有一个简单的whoami命令,当我在脚本编辑器和终端中使用osascript /Users/amaloney/Desktop/test.scpt <运行它时/ p>

但是在我的Swift文件中

import Foundation

let task = NSTask();
task.launchPath = "/usr/bin/osascript"
task.arguments = ["/Users/amaloney/Desktop/test.scpt"]

task.launch()

我继续收到以下错误

脚本错误-54。因错误-1700而无法收到错误文本。

有关如何使其正常工作的任何想法?

谢谢!

供参考 - test.scpt

do shell script "whoami"

2 个答案:

答案 0 :(得分:1)

我在Xcode Playground中运行它,这显然是问题的根源。一旦我继续将此代码集成到我的OSX应用程序中,它工作正常。

答案 1 :(得分:0)

问题似乎与代码的AppleScript部分有关:

  1. script error -54

      

    ↳-54文件权限错误

  2. Couldn't get error text because of error -1700.

      

    ↳无法进入...类型项目。

  3. 您的脚本可能会尝试执行其无权执行的操作,并尝试分配错误的类型 - 无需查看脚本或知道脚本的作用。未知。