Как создать сервис osx, который передает имя своего сервиса скрипту оболочки?

Я создаю сервис OSX с Automator, чтобы показать элементы контекстного меню для файла, например, как Dropbox показывает меню ниже.

Dropbox контекстное меню правой кнопкой мыши

Я понимаю, что это не сервисы OSX, но я хотел бы сделать то же самое с сервисами OSX. Поэтому я создал 2 службы osx, используя automator для файлов и папок в Finder.app, и добавил к нему действие сценария оболочки.

Теперь я мог видеть все свои 2 услуги (поделиться с a, поделиться с b) в контекстном меню, как показано ниже

Из скрипта оболочки (действия для этих сервисов) запускаю приложение. Я хотел запустить приложение, указав путь к файлу и имя службы в виде двух аргументов командной строки.

Любая идея, как получить имя службы выбранного пользователем сервиса внутри сценария оболочки, как мы получаем имя файла из параметра командной строки "$@"

1 ответ

"По сути, моя цель - открыть браузер с URL-адресом, который отличается для каждого пункта меню".

Что-то вроде следующего AppleScript можно использовать для открытия URL-адреса в веб-браузере по умолчанию, используя AppleScript:

tell application "Finder" to open location "http://learnbymac.com"

Для открытия URL из оболочки можно использовать что-то вроде следующего скрипта оболочки:

open -a "Finder" "http://learnbymac.com"

Использование Finder для открытия URL-адресов лучше, чем использование Safari, потому что, когда вы используете Finder для открытия URL-адресов, вы получаете браузер по умолчанию, а не всегда Safari.

"Я запусту приложение / exe из сценария оболочки, передав путь к имени файла и службы, чтобы приложение могло создать URL-адрес на основе имени службы, прочитав сведения о файле из базы данных и загрузив URL-адрес в браузере."

Возможно, вам придется указать имя вашей службы в действии рабочего процесса "Выполнить сценарий оболочки" при запуске приложения. В любом случае это может быть лучше, потому что тогда, если пользователь изменит название Сервиса, ваше программное обеспечение все равно будет работать. Я знаю, что было бы идеально, если бы не дублировалось имя Сервиса, имеющее его один раз в комплекте рабочего процесса и снова в вашем действии "Выполнить сценарий оболочки", но я не знаю, как получить имя работающей в данный момент Сервиса.

- Кейделл
http://mailto%3Akaydell@yahoo.com/

Другие вопросы по тегам