在MacOS 10.5上,此osascript命令按预期工作,显示带红色停止符号的对话框:
osascript -e 'tell app "System Events" to activate'
-e 'tell app "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon stop default button "Ok"'
-e 'tell app "System Events" to quit'
一个MacOS 10.12,但是,此命令失败并显示以下隐藏错误消息:
427:433: syntax error: Expected end of line, etc. but found class name. (-2741)
我发现将上面的“停止”图标更改为“注释”在10.12上工作,显示一个没有错误的对话框,例如:
osascript -e 'tell app "System Events" to activate'
-e 'tell app "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon note default button "Ok"'
-e 'tell app "System Events" to quit'
其他人可以重现这个问题吗?有没有办法解决它除了避免停止图标?我猜这是AppleScript中的一个错误,但也许我错过了一些东西。
答案 0 :(得分:1)
原因是与System Events
的术语发生冲突。请改用Finder
。
osascript -e 'activate application "Finder"'
-e 'tell application "Finder" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons "Ok" with icon stop default button "Ok"'
由于Finder永久运行,quit
行可以省略。
答案 1 :(得分:1)
通常,如果您希望定位任何表现出这种术语冲突的AppleScriptable应用程序,通常也可以首先将冲突术语分配给外部作用域中的变量,然后在{{1 } scope使用该变量。
例如,如果tell
应用与System Events
字词(来自stop
)发生冲突,您可以执行以下操作:
StandardAdditions.osax
{还进行了一些其他或多或少的迂腐调整:现在有一个明确的续行(osascript -e 'set kStopIcon to stop' \
-e 'tell application "System Events" to display dialog "Picking a folder failed, exiting." with title "Start Up Error" buttons {"Ok"} with icon kStopIcon default button "Ok"'
换行符),以便于测试如地狱;并且,\
标记的参数现在直接指定列表,而不是涉及隐式强制。}