【问题标题】:Error in apple script苹果脚本中的错误
【发布时间】:2014-01-24 04:03:47
【问题描述】:
我只是在玩弄苹果脚本来和我的朋友开玩笑。我做了这个简单的终端命令,看起来他们的电脑被黑了(他们很容易害怕)。我打算将它编译成苹果脚本中的应用程序,但是当我编译它时,我一直收到语法错误。我已经尝试修复它,但无济于事。我只是在学习苹果脚本,所以这可能是一个愚蠢的菜鸟问题。谢谢!
~科尔
这是脚本:
tell application "Terminal"
do script "while (true) do echo -n "Error: System Breach Detected 190721064281 killing proccesses. 12060219682197312-90785236412412001-612073412-712481243261=1123-0914712-1209412107381\][12389138719 End."; done"
activate
end tell
【问题讨论】:
标签:
macos
terminal
applescript
【解决方案1】:
您试图将双引号字符串 ("Error: System Breach...) 嵌套在另一个双引号字符串 ("while (true) do...) 中,但引号不会嵌套。当 AppleScript 看到 "while (true) do echo -n "Error 时,它认为它看到的是一个双引号字符串,后面跟着单词 Error,这没有任何意义。
要解决此问题,您可以使用反斜杠 (\) 转义内部双引号 - AppleScript 将在解析字符串时删除转义,因此它们不会传递给 shell 并混淆它。但是还有另一个问题:字符串中间还有一个杂散的转义符(反斜杠),这也会混淆 AppleScript。为了完成这项工作,您实际上需要逃脱转义 (\\)。这是添加必要转义的结果:
tell application "Terminal"
do script "while (true) do echo -n \"Error: System Breach Detected 190721064281 killing proccesses. 12060219682197312-90785236412412001-612073412-712481243261=1123-0914712-1209412107381\\][12389138719 End.\"; done"
activate
end tell