2009-09-09 11 views
9

Jestem kuszony przez zdolność Automator.app do tworzenia usług kontekstowych w systemie Mac OS X Snow Leopard. Chciałbym utworzyć skróty klawiszowe dostępne do manipulowania fragmentami tekstu, wywołując skrypt powłoki. Jednak Automator sugeruje tylko bash, Perl, Python i Ruby (między innymi), aby na to zezwolić. Ale ponieważ PHP również jest dostarczane z Mac OS (i, szczerze mówiąc, jest to jedyny język skryptowy, który w pełni opanowałem), zastanawiam się, dlaczego nie mogę uruchomić skryptu powłoki PHP.Jak wykonać skrypt powłoki PHP jako działanie Automatora w systemie Mac OS X

Odpowiedz

6

To tylko hack, ale co powiesz na tworzenie pythona, rubinu, perla lub skryptu bash, który wywołuje interpreter wiersza poleceń php za pomocą skryptu php, który chcesz uruchomić?

Na przykład w bash będzie tak proste, jak to:

#!/bin/bash 
php myscript.php 

Teraz zapisz go, nadać mu uprawnienia do wykonania:

chmod +x my_bash_script.sh 

i voila. Automator może teraz uruchomić skrypt bash, który wywołuje skrypt php.

1

Automator ma działanie "Run Shell Script" po prostu dodaj go do przepływu pracy i postępuj zgodnie z instrukcjami w lewym dolnym rogu.

4

Możesz użyć akcji "Uruchom skrypt powłoki", aby uruchomić skrypt PHP. Jeden samowystarczalny sposobem jest użycie <<EOF ... EOF przekazać skrypt z poleceniem php:

Using "execute shell script" action for PHP code

(gorąco polecam uczenia się Python, Ruby i Perl .. PHP nie ma pewne zalety dla internetowych programowania , ale po prostu nie jest przeznaczony do wiersza poleceń skryptów .. to na pewno wykonalne, to będzie po prostu nie być aż tak .. przyjemny)

3

lista muszli że Automator obsługuje w

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

Możesz śledzić , aby dodać wpis dla/usr/bin/php. Możesz najpierw skopiować plik .action do ~/Library/Automator i zamiast tego pracować nad kopią.

Oczywiście łatwiej jest po prostu umieścić go w skrypcie bash, jak sugerowali inni.

6

Powyższe rozwiązanie dbr jest doskonałe, ale okazało się, że nie działa ono dla mnie, być może z powodu późniejszej zmiany w powłoce, wersji PHP lub OS (używam OS X 10.8). Po wielu drapaniach głowy odkryłem, że odpowiedzią jest cytowanie znacznika heredoc.

Przydatnym dodatkiem jest użycie odpowiedniej składni do przekazania argumentów do skryptu php. Umieszczenie wszystko razem, używam:

php -- "[email protected]" <<'EOF' 
<?php 
print_r($argv); 
?> 
EOF 
+0

Aby dokonać tej pracy w Pythonie, używając domyślnego interpretera Twojego ENV, należy zmienić wyżej jednym łącznikiem: python - „$ @” << EOF „” – xref

Powiązane problemy