Как выполнить сценарий оболочки PHP как действие Automator в Mac OS X

Меня соблазняет способность Automator.app создавать контекстные сервисы в Mac OS X Snow Leopard. Я хотел бы создать некоторые доступные для клавиатуры ярлыки, чтобы манипулировать текстовыми фрагментами, вызывая скрипт оболочки. Однако Automator предлагает только bash, Perl, Python и Ruby (в том числе), чтобы это разрешить. Но поскольку PHP также поставляется с Mac OS (и, честно говоря, это единственный язык сценариев, который я полностью освоил), мне интересно, почему я не могу запустить скрипт оболочки PHP.

Это всего лишь взломать, но как насчет создания сценария python или ruby ​​или perl или bash, который вызывает интерпретатор командной строки php с скриптом php, который вы хотите выполнить?

Например, в bash было бы так просто:

#!/bin/bash php myscript.php 

Теперь сохраните его, дайте ему разрешение на исполнение:

 chmod +x my_bash_script.sh 

И вуаля. Теперь Automator может запустить сценарий bash, который вызывает скрипт php.

Решение dbr выше превосходно, но я обнаружил, что это не сработало для меня, возможно, из-за более позднего изменения версии оболочки, php или OS (я использую OS X 10.8). После большого поцарапания головы я обнаружил, что ответом является цитировать маркер heredoc.

Полезным дополнением является использование соответствующего синтаксиса для передачи аргументов через php-скрипт. Объединяя все это, я использую:

 php -- "$@" <<'EOF' <?php print_r( $argv ); ?> EOF 

Вы можете использовать действие «Run Shell Script» для запуска PHP-скрипта. Один автономный способ состоит в том, чтобы использовать <<EOF ... EOF чтобы передать скрипт команде php :

Использование действия «выполнить сценарий оболочки» для кода PHP

(Я бы настоятельно рекомендовал изучать Python, Ruby или Perl .. У PHP есть некоторые преимущества для веб-программирования, но он просто не предназначен для сценариев командной строки .. Это, безусловно, выполнимо, это будет просто не так … приятно )

Список оболочек, поддерживаемых Automator, находится в

  /System/Library/Automator/Run\ Shell\ Script.action/Contents/Resources/Shells.plist 

Вы можете следовать инструкциям этого парня, чтобы добавить запись для / usr / bin / php. Вы можете сначала скопировать файл .action в ~ / Library / Automator и вместо этого работать с копией.

Конечно, проще всего просто обернуть его в сценарий bash, как предложили другие.

У Automator есть «Run Shell Script» Действие просто добавьте его в рабочий процесс и следуйте инструкциям в левом нижнем углу.