Terminal Applescript无法逃脱报价

时间:2014-05-11 12:45:46

标签: terminal applescript osascript

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

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

然而,当我在写出完整句子时尝试使用撇号时会出现问题。示例:osascript -e 'tell app "Finder" to display dialog "Te\'st"'当我运行此操作时,我剩下的所有内容都没有对话框,并且终端中的文本输入如下所示:

>

据我所知,这应该通过一切工作,但是,它没有。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

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

答案 1 :(得分:1)

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

由于您使用的是osascript shell bash)的引用规则首先应用

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

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

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

通常更容易将单个引用的字符串传递给osascript ,因为双引号经常在AppleScript中使用,因此在封闭时必须进行转义在 double 引用的字符串中(如在接受的答案中)。

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