3

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

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

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

>

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

4

2 回答 2

5

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

由于您正在使用osascript,因此首先应用的是shell( ' bashs) 引用规则

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

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

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

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

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

于 2014-05-12T03:17:09.710 回答
3

你可以这样做:

osascript -e "tell app \"Finder\" to display dialog \"'Something' in quotes"\"
于 2014-05-11T13:18:04.583 回答