Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Swift 从菜单栏项运行shell命令_Swift_Macos_Shell - Fatal编程技术网

Swift 从菜单栏项运行shell命令

Swift 从菜单栏项运行shell命令,swift,macos,shell,Swift,Macos,Shell,我按照一个非常有用的方法创建了一个简单的菜单栏应用程序,它有两个操作。但是,我希望在选择其中一个操作时执行两个shell命令 Xcode中的当前函数是: func constructMenu() { let menu = NSMenu() menu.addItem(NSMenuItem(title: "ON", action: #selector(AppDelegate.printQuote(_:)), keyEquivalent: "S")) menu.addItem(NSMenuItem(

我按照一个非常有用的方法创建了一个简单的菜单栏应用程序,它有两个操作。但是,我希望在选择其中一个操作时执行两个shell命令

Xcode中的当前函数是:

func constructMenu() {
let menu = NSMenu()

menu.addItem(NSMenuItem(title: "ON", action: #selector(AppDelegate.printQuote(_:)), keyEquivalent: "S"))
menu.addItem(NSMenuItem(title: "OFF", action: #selector(AppDelegate.printQuote(_:)), keyEquivalent: "R"))
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit SMAC", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))

statusItem.menu = menu
这显示了我单击菜单栏时预测的三个选项:

然而,这正是我可可知识不足的地方。我希望在单击操作时执行以下shell脚本:

chmod u+x ~/Desktop/Mask.sh
~/Desktop/Mask.sh
最后,在按下OFF按钮时执行以下两个bash脚本:

chmod u+x ~/Desktop/Unmask.sh
~/Desktop/Unmask.sh

以下两类应相关:和

过程
表示当前进程的子进程的对象。
使用process类,您的程序可以按如下方式运行另一个程序: 一个子进程,可以监视该程序的执行。过程 对象创建一个单独的可执行实体;它与螺纹的不同之处在于 它不与创建的进程共享内存空间 它

例如,这将是用于
chmod
脚本的内容。

NSUserUnixTask
执行unix应用程序的对象。
NSUserUnixTask类用于运行unix应用程序,通常是 shell脚本,来自您的应用程序。它旨在执行 用户提供的脚本,并将在 应用程序的沙箱(如果有)

这就是可以用来执行
shell
脚本的内容

你应该看看。