Отправка команды quit
и keystroke
не означает принудительный выход. Я предполагаю, что решение, на котором вы остановились, оказалось работающим просто потому, что после того, как была введена команда quit
, я предполагаю, что появилось диалоговое окно с вопросом, хотите ли вы принудительно выйти из терминала. Нажатие Enter - физически или программно - затем выберет предложенную вам опцию принудительного выхода.
Проблема с программной отправкой нажатия клавиши состоит в том, что, если фокус неожиданно переключается на другое окно в вашей системе, нажатие клавиши будет отправлено не в то окно.
Один из добросовестных методов принудительного выхода из приложения из AppleScript - получить его PID, а затем выполнить команду kill
помощью сценария оболочки. На самом деле это всего лишь одна строка кода. Вот как бы это выглядело, когда используется для решения вашей ситуации (для удобства чтения отформатирован в две строки):
tell application "System Events" to ¬
do shell script "kill -9 " & unix id of process "Terminal"