无法格式化带有多个引号的字符串

Trouble formatting a string with multiple quotation marks

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

我有这个:

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)

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

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

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

这里是 parameterize an AppleScript run via 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()