终端 Applescript 无法转义报价

Jam*_*fer 3 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"'当我运行它时,只剩下没有对话框,终端中的文本输入如下所示:

>

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

mkl*_*nt0 5

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

由于您使用的osascript,它是外壳的(bash引用适用规则的)第一

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

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

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

这是通常更容易通过单一-quoted字符串osascript,因为双引号在AppleScript的频繁使用,因此具有封闭在一个时候进行转义-quoted字符串(如在接受的答案)。

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