Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Swift中运行Shell命令_Macos_Swift_Shell_Applescript - Fatal编程技术网

Macos 在Swift中运行Shell命令

Macos 在Swift中运行Shell命令,macos,swift,shell,applescript,Macos,Swift,Shell,Applescript,我正在尝试构建一个swift OSX应用程序,它可以运行一些shell命令来装载用户请求的VPN。我尝试使用NSAppleScript,但每次尝试以管理员权限运行时都会出现错误,因此我决定使用NSTask调用将以管理员身份运行并装载VPN的apple脚本 为了调试通过NSTask使shell命令在swift中工作,我制作了一个测试脚本文件,其中只有一个简单的whoami命令,当我在脚本编辑器和终端中使用osascript/Users/amaloney/Desktop/test.scpt运行该命令

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

为了调试通过NSTask使shell命令在swift中工作,我制作了一个测试脚本文件,其中只有一个简单的whoami命令,当我在脚本编辑器和终端中使用
osascript/Users/amaloney/Desktop/test.scpt运行该命令时,该命令就会工作

但是在我的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脚本“whoami”

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

  • 脚本错误-54

    ↳ -54文件权限错误

  • 由于错误-1700,
    无法获取错误文本。

    ↳ 做不到。。。输入项目类型


  • 很可能您的脚本试图执行一个它没有权限执行的操作,并且还试图分配错误的类型—没有看到脚本或不知道它执行什么操作—这是未知的。

    我在Xcode游乐场中运行此操作,这显然是问题的根源。一旦我将这些代码集成到我的OSX应用程序中,它就运行得很好

    您是否正在等待命令完成
    任务。waitUntilExit()
    ?@Kametrixom我也尝试过使用它运行,同样的error@ThomasKilian我已经读过了,该用户出现错误-2741,我不是。您是否尝试过使用bash或Perl而不是Applescript?我也怀疑这一点,但我似乎没有发现我的脚本有任何问题--do shell script“whoami”如果您想将
    Applescript
    NSTask
    一起使用,则命令必须是绝对命令:
    do shell script“/usr/bin/whoami“
    。。。whoami实用程序已经过时了,因此您可以将
    /usr/bin/id
    NSTask
    一起使用,这样就不需要AppleScript了。我的最终目标不是使用whoami,这只是一个简单的测试。我的计划是在我的swift appMost
    NSTasks
    中执行一些jamf命令,它们可以类似地工作;希望这能让你更好地理解女性。