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