На моем MacBook OSX 10.7 (Lion) работает небольшой скрипт оболочки, который использует osascript
для сбора информации от пользователя. Этот скрипт иногда отлично работает, а иногда возвращает execution error: System Events got an error: No user interaction allowed. (-1713)
.
Работает ли он или нет стабильно после перезагрузки моего Mac - если он работает, он будет работать до перезагрузки; если он не работает, он не будет работать, пока я не перезагружусь; когда я перезагружаюсь, я не могу предсказать, сработает ли это или нет, пока я не попробую, даже если запустить это первое, что я делаю после перезагрузки.
Соответствующую часть скрипта можно смоделировать в Terminal.app с помощью (скопируйте все это и вставьте в Terminal.app):
echo $(/usr/bin/osascript <<-'__HEREDOC__'
tell application "System Events"
activate
set input to display dialog "What you type here should be returned:" default answer "" buttons {"Cancel", "OK"} default button 2
return text returned of input as string
end tell
__HEREDOC__
)
Если этот код показывает вам диалог, он работает для вас. Если отображается ошибка «Нет взаимодействия с пользователем…», это не работает для вас. Если вы перезагрузите компьютер, он может поменяться с рабочего на неработающий или обратно.
Google возвращает пару тысяч результатов для "osascript" Взаимодействие с пользователем не разрешено "", но я не могу найти других, страдающих противоречивыми результатами, которые я получаю. Некоторые предлагают обходной путь, включающий сохранение файла сценария и его выполнение из AppleScript с помощью
on run {sourcefile}
tell application “AppleScript Runner”
do script sourcefile
end tell
end run
... Я не пробовал это, потому что это кажется очень уродливым. Что может быть причиной того, что это иногда не работает? Как вы решите проблему, подобную этой?