尽管任何一个脚本上下文都可以做其他事情(因为可以调用Shell脚本/usr/bin/osascript
来调用AppleScript,而AppleScript具有该do shell script
命令),但确实存在一些上下文比另一个更适合的上下文。
两种脚本语言都是“胶水”语言,它们可以自己做最少的事情,而是通过调用其他程序的功能来完成大部分任务。Shell脚本使用Unix管道,而AppleScript具有tell application
语法。
它们的不同之处在于AppleScripts直接与可编写脚本的应用程序(几乎总是GUI应用程序)进行通信,而Shell脚本主要与命令行程序进行通信(其中一些可以调用图形用户界面,但许多不能调用图形用户界面)。
当涉及文件管理任务时,两种方法都可以使用。可以Tell Application Finder
复制文件,或cp
在Shell脚本中运行命令。那么,为什么要使用一个呢?当然,某些脚本编写者比另一种语言更熟悉一种语言,因此更喜欢使用该工具。但是更好的考虑是脚本的用户。通常可以从Mac GUI调用AppleScript:双击AppleScript应用程序,或将文件拖放到其中,或者使用系统范围内或特定程序中的AppleScript菜单。可以将诸如Mail之类的程序设置为在传入消息上运行AppleScript以对其进行过滤。对于习惯于以“类Mac”方式(即从GUI)使用Mac的用户,AppleScripts通常更易于访问。
Shell脚本经常(但不总是)驻留在终端中。如果已经在使用Terminal,则运行Shell脚本比调用AppleScript更为方便。另一方面,由于必须在“终端”窗口中键入命令,或者甚至单击打开“终端”窗口来执行其功能的脚本文件,许多用户对此不满意。我个人认为Shell脚本的语法比AppleScripts更具可读性,但是我怀疑我在其中很少。Shell脚本为许多不同的类Unix系统的用户所熟悉。
无论如何,这两种都是强大的工具,可以更好地控制Mac。