Хотя любой контекст сценария может делать все, что может другой (поскольку сценарии оболочки могут /usr/bin/osascript
вызывать AppleScript, а AppleScript имеет do shell script
команду), действительно, существуют контексты, для которых один лучше подходит, чем другой.
Оба языка сценариев являются «склеивающими» языками - они могут делать минимальные вещи сами и вместо этого выполнять большинство своих задач, используя возможности других программ. Сценарии оболочки используют каналы Unix, в то время как AppleScript имеет tell application
синтаксис.
Они расходятся в том, что сценарии AppleScripts напрямую взаимодействуют со сценариями приложений (почти всегда приложениями с графическим интерфейсом), в то время как сценарии оболочки взаимодействуют главным образом с программами командной строки (некоторые из которых могут вызывать графические пользовательские интерфейсы, но многие этого не делают).
Когда дело доходит до задач управления файлами, оба подхода могут работать. Можно Tell Application Finder
скопировать файлы или выполнить cp
команду в сценарии оболочки. Так зачем использовать один над другим? Конечно, некоторые авторы сценариев лучше знакомы с одним языком, чем с другим, и поэтому предпочитают использовать этот инструмент. Но лучше рассмотреть пользователя сценария. AppleScript часто можно вызвать из графического интерфейса Mac: дважды щелкнув приложение AppleScript, или перетащив файлы в одно из них, или используя меню AppleScript либо в масштабе всей системы, либо в рамках определенной программы. Такие программы, как Mail, могут быть настроены на запуск AppleScript для входящих сообщений для их фильтрации. Для пользователей, привыкших использовать Mac «в стиле Mac» (например, из GUI), сценарии AppleScripts часто более доступны.
Сценарии оболочки часто (но не всегда) живут в Терминале. Если вы уже используете Terminal, запуск сценария оболочки может быть более удобным, чем вызов AppleScript. С другой стороны, многие пользователи вынуждены вводить команды в окне терминала или даже щелкать файл скрипта, который открывает окно терминала, чтобы творить чудеса. Лично я нахожу синтаксис сценариев оболочки более читабельным, чем синтаксис AppleScripts, но я подозреваю, что в этом я нахожусь в меньшинстве. Сценарии оболочек являются привычными для пользователей различных Unix-подобных систем.
В любом случае, оба являются мощными инструментами для получения лучшего контроля над вашим Mac.