0

我正在制作一个运行osascript以优雅地退出应用程序而不是killall/kill命令的 NSTask。

我有这个:

let killtask = NSTask()
killtask.launchPath = "/usr/bin/killall"
killtask.launchPath = "/usr/bin/osascript"
killtask.arguments = ["-e","'quit app", ""Transmission"""'"]
killtask.launch()

麻烦的线是我试图通过的论点。

终端中的命令是这样的:

/usr/bin/osascript -e 'quit app "Notes"'

我哪里错了?如何格式化参数,以便获得命令中实际使用的所有单引号和双引号?

编辑

跑步

killtask.arguments = ["-e \'quit app \"Transmission\"\'"]

给我:

0:2: syntax error: A unknown token can’t go here. (-2740)
4

2 回答 2

1

这是通过以下方式参数化 AppleScript 运行osascript的正确方法:

let appName = "Transmission"

let killtask = NSTask()
killtask.launchPath = "/usr/bin/osascript"
killtask.arguments = ["-e", "on run {appName}", 
                      "-e", "  quit app appName", 
                      "-e", "end run",
                      appName]
killtask.launch()
于 2015-05-07T06:57:07.510 回答
0

尝试分隔引号,并确保您的论点是正确的。

let killtask = NSTask()
killtask.launchPath = "/usr/bin/osascript"
killtask.arguments = ["-e","'quit app \"Transmission\"'"]
killtask.launch()

如果参数不起作用,请尝试在单引号 ( ') 前加一个反斜杠。

于 2015-05-07T03:10:02.757 回答