尝试通过 Swift 代码内的 AppleScript 运行 一个 shell 脚本时引用相关错误

Quote-related error when trying to run a shell script via AppleScript inside of Swift code

我正在编写一个 AppleScript,我将在 macOS 应用程序中 运行。该脚本在脚本编辑器中运行良好,但当我将其放入 Xcode 并尝试对其进行 运行 时,编码 URL 失败并出现引号错误。

我很乐意通过 Swift 和 Xcode 而不仅仅是脚本编辑器将其成功添加到 运行。谢谢!

我的代码:

        var source = """
        on encode(str)
            do shell script "php -r 'echo urlencode(\"" & str & "\");'"
        end encode

        set f to encode("https://twitter.com")
        f
        """
        let script = NSAppleScript(source: source)!
        var error: NSDictionary? = nil
        let result = script.executeAndReturnError(&error)

        print(result.stringValue)
        print(error)

打印出错误:

Optional({
    NSAppleScriptErrorBriefMessage = "Expected end of line but found \U201c\"\U201d.";
    NSAppleScriptErrorMessage = "Expected end of line but found \U201c\"\U201d.";
    NSAppleScriptErrorNumber = "-2741";
    NSAppleScriptErrorRange = "NSRange: {60, 1}";
})

在 shell 脚本中引用字符串可能很烦人。

试试这个,quoted form of 寻找最佳组合

do shell script "php -r " & quoted form of ("echo urlencode(" & quote & str & quote & ");")

顺便NSRange: {60, 1}告诉你哪里出错了(字符串的第61个字符)