为什么简单的 osascript 命令在 OS X Lion 中失败?

pau*_*ulr 5 macos applescript

我有两个非常简单的 OSA 脚本来允许在实验室环境中登录和注销计算机。当通过 ARD 推送时,这些脚本在 Snow Leopard 中完美运行,在 ssh 会话中交互,但它们在运行 Lion 的机器上失败。

精简到它的基本要素,注销脚本如下所示:

osascript -e '告诉应用程序“系统事件”注销'

  • 直接从机器上的交互式 shell 运行时有效
  • 从 ARD 推送时有效
  • 从 ssh 会话运行时出现“执行错误:变量 out 未定义。(-2753)”失败
  • 当脚本编译为 .scpt 时有效,然后从 ssh 运行(例如“/usr/bin/osacript logout.scpt”)

登录脚本直接基于此。显示问题的精简版本是:

osascript -e '将应用程序“系统事件”告诉按键“前端”'

  • 直接从交互式会话运行时有效
  • 从 ARD 推送时有效
  • FAILS with execution error: 发生了 -10810 类型的错误。(-10810) 从 ssh 运行时
  • 当作为编译的 scpt 运行并从 ssh 运行时有效

因为这些脚本交互工作良好,并且因为它们在 Snow Leopard 中的所有模式下都工作正常,所以我认为 osascript 中的某些内容一定发生了变化,但我不知道是什么,并且错误消息不是很具有描述性。欢迎大家提出意见。

epe*_*sis 1

尝试转义引号。

所以: osascript -e 'tell application "System Events" to log out' 变成: osascript -e 'tell application \"System Events\" to log out'

osascript -e 'tell application "System Events" to keystroke "frontend"' 变为: osascript -e 'tell application \"System Events\" to keystroke \"frontend\"'

尝试一下并告诉我们会发生什么。