Передайте аргументы в osascript через функцию оболочки в OS X Mountain Lion

2314
Larry Kyrala

Ответ в « Как открыть новое окно Firefox с аргументом URL» не работает в Mac OSX Mountain Lion (10.8.2). Я не могу комментировать этот ответ или вопрос, поэтому мне пришлось создать новый вопрос.

Это терпит неудачу как это:

$ firefox-window http://www.yahoo.com dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/osascript) is code signed with entitlements 

Новое окно открывается успешно, но оно пустое (т. Е. Переменная среды, переданная в AppleScript в функции bash, игнорируется).

Есть ли альтернативный способ передачи переменных в applecript из командной строки? (возможно, не используя Bash?)

Рекомендации

«Приложение с песочницей не может использовать AppleScript для связи с другим приложением на вашем Mac, если только разработчик специально не запрашивает (и не получает) разрешение на это».

Поэтому я предполагаю, что это ограничение предотвращает использование техники, описанной выше, то есть скрипт bash не может обернуть appleScript, который общается с firefox.

Обходной путь № 1

Вызывайте его напрямую вместо использования переменной оболочки ($ 1). Например, это работает:

$ osascript ~/bin/firefox-window.scpt "http://www.yahoo.com" 

Firefox открывает новое окно, указывающее на Yahoo.

1
Интересно. Это «функция безопасности», связанная с гейткипером в 10.8, о которой уже сообщалось. Я не уверен, что есть еще решение. Я перефразировал и немного обобщил ваш вопрос, иначе он был бы дубликатом того, с которым вы связались. Я надеюсь, что у кого-то есть обходной путь для этого, тогда я мог бы также обновить свой ответ на первый вопрос. slhck 11 лет назад 0
благодарю вас! Я видел пару вопросов, относящихся к функции безопасности, и я понимаю, что они пытаются предотвратить, применяя это таким образом, но пока обходные пути показывают криптовалюты, которые не имеют никакого переменного ввода. Мое второе предположение - переписать функцию в чистом яблочном сценарии и передать переменные из командной строки вместо использования env vars, но я все еще работаю над этим. Larry Kyrala 11 лет назад 0

1 ответ на вопрос

0
Caleb Xu
osascript -e 'tell application "Firefox"' -e 'open location "http://example.com/"' -e 'end tell' 

Это должно быть сделано в новой вкладке, а не в новом окне, если это нормально.