【发布时间】:2015-04-14 03:13:27
【问题描述】:
我正在运行 OS X 10.10.2。我面临一个奇怪的问题,AppleScript 不会从 shebang'ed 脚本启动应用程序,而在其他任何地方都可以正常工作(脚本编辑器,管道到 osascript 等)。具体来说,请考虑以下名为 launch-app 的示例脚本:
#!/usr/bin/osascript
launch application "TextEdit"
当 TextEdit 没有运行而我运行时
./launch-app
我明白了
./launch-app:0:29: execution error: An error of type -10810 has occurred. (-10810)
当我这样做时
<launch-app osascript
嗯,它工作得很好;这意味着以下 Bash 脚本也可以工作:
#!/usr/bin/env bash
osascript <<EOF
launch application "TextEdit"
EOF
真的很奇怪。 (顺便说一句,tell ... activate ... end tell 块会导致相同的错误。我在这里使用launch 只是为了保持示例的最小化。)
我有一些涉及激活应用程序的旧脚本(嗯,实际上我所有的旧脚本都涉及tell ... activate ... end tell),这些脚本在过去确实有效。我不知道什么时候开始分崩离析,因为当我运行这些脚本时,activate 的应用程序通常已经启动。我的印象是这个问题至少可以追溯到 10.10.1。
我在 SO 上查看了几个相关的帖子,例如,this one,但它们没有帮助。我还尝试通过阅读 this one 之类的文章来理解错误 -10810,但我的问题绝对不像一个填充的进程表(否则为什么在从 shebang 运行 osascript 时直接调用 osascript 不起作用?)。
【问题讨论】:
-
您是否在不同的机器上尝试过(运行相同的操作系统版本)?该脚本看起来不错(它在我的 OSX 10.10.2 机器上运行良好)。
-
@mklement0 好点。控制台日志显示“1/30/15 2:05:42.421 PM TextEdit[21620]:应用程序包中没有 Info.plist 文件或 Info.plist 文件中没有 NSPrincipalClass,正在退出”。不知道这怎么可能,特别是考虑到该脚本适用于所有其他调用方式。
-
@mklement0 嗯,我没有意识到即使
do shell script也不起作用。我已经向 Apple 提交了错误报告。顺便说一句,我刚刚在 10.8.5 上测试了同样的东西,正如预期的那样,它只是定义了。我手头没有 10.9 环境。 -
@mklement0 标准输入有效,文件无效...
-
好消息:问题终于在 10.10.*3* 得到解决。
标签: applescript