【问题标题】:Terminal Applescript unable to escape quote终端 Applescript 无法逃脱报价
【发布时间】:2014-05-11 12:45:46
【问题描述】:

尝试在我的 osascript 命令中包含引号 ' ' 时遇到了一个奇怪的问题。

如果我尝试转义一个正常的可转义字符,它就可以正常工作。示例:osascript -e 'tell app "Finder" to display dialog "Te\\st"' Finder 会弹出一个对话框,其中包含文本 Test

但是,当我在写出完整的句子时尝试使用撇号时,就会出现问题。示例:osascript -e 'tell app "Finder" to display dialog "Te\'st"' 当我运行它时,我只剩下没有对话框,终端中的文本输入如下所示:

>

据我所知,这无论如何都应该有效,但是它没有。

【问题讨论】:

    标签: terminal applescript osascript


    【解决方案1】:

    只是为了补充@Zero 的有用答案(确实解决了问题):

    由于您使用的是osascript,因此shellbash's)的引用规则首先应用

    bash(或任何与 POSIX 兼容的 shell)中,不能在单引号字符串中包含单引号 - 即使转义也不行。

    然而,你可以做的是将你的字符串分成多个部分,并在需要的地方简单地用单引号拼接(在带引号的字符串之外转义为\'):

    osascript -e 'tell app "Finder" to display dialog "Te'\''st"'
    
    • 'tell app "Finder" to display dialog "Te',第一部分,后面是转义的单引号\',后面是字符串的其余部分'st"'
    • 由于各部分之间没有空格,bash 创建了一个 single 字符串,其中包含拼接文字 '

    通常更容易将 单引号 引用的字符串传递给 osascript,因为双引号在 AppleScript 中经常使用,因此在包含在-引号字符串(如接受的答案)。

    在您必须将单引号传递给 AppleScript 的典型罕见事件中,您可以使用此答案中描述的技术。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      osascript -e "tell app \"Finder\" to display dialog \"'Something' in quotes"\"
      

      【讨论】:

        猜你喜欢
        • 2021-10-22
        • 2012-02-11
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2019-12-25
        • 2016-07-07
        相关资源
        最近更新 更多