2009-09-09 12 views
9

Me siento tentado por la capacidad de Automator.app de crear servicios contextuales en Mac OS X Snow Leopard. Me gustaría crear algunos accesos directos accesibles por teclado para manipular fragmentos de texto al llamar a un script de shell. Sin embargo, Automator solo sugiere bash, Perl, Python y Ruby (entre otros) para permitir esto. Pero, como PHP también viene con Mac OS (y, para ser honesto, es el único lenguaje de scripting que domino por completo), me pregunto por qué no puedo ejecutar un script de shell PHP.Cómo ejecuto un script de shell PHP como acción de Automator en Mac OS X

Respuesta

6

Esto es solo un truco, pero ¿qué tal crear una secuencia de comandos python, o ruby ​​o perl o bash que llame al intérprete de línea de comandos php con la secuencia de comandos php que desea ejecutar?

Por ejemplo en bash podría ser tan simple como esto:

#!/bin/bash 
php myscript.php 

Ahora guarde, darle permiso de ejecución:

chmod +x my_bash_script.sh 

y listo. Automator ahora puede ejecutar el script bash, que llama al script php.

1

Automator tiene una acción "Ejecutar script de shell" simplemente agréguela a su flujo de trabajo y siga las instrucciones en la esquina inferior izquierda.

4

Puede usar la acción "Ejecutar script de shell" para ejecutar un script PHP. Una forma autónoma es utilizar <<EOF ... EOF para pasar el script para el comando php:

Using "execute shell script" action for PHP code

(I recomendaría fuertemente el aprendizaje de Python, Ruby o Perl .. PHP hace tiene algunas ventajas para la web de programación , pero simplemente no está diseñado para secuencias de comandos de línea de comandos .. es sin duda se hace, no sólo va a ser casi tan agradable ..)

3

La lista de conchas que soporta Automator está en

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

Puede seguir this guy's instructions para agregar una entrada para/usr/bin/php. Es posible que desee copiar el archivo .action en ~/Library/Automator primero, y trabajar en la copia en su lugar.

Por supuesto, es probablemente más fácil simplemente envolverlo en un script bash, como otros han sugerido.

6

La solución anterior de dbr es excelente, pero descubrí que no funcionó para mí, quizás debido a un cambio posterior en la versión de shell, php o OS (estoy usando OS X 10.8). Después de un montón de rasguños en la cabeza, encontré que la respuesta es citar el marcador de heredoc.

Una adición útil es utilizar la sintaxis apropiada para pasar los argumentos a la secuencia de comandos php. Poner todo eso junto, estoy usando:

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

para hacer este trabajo para Python, utilizando intérprete predeterminado de su env, cambio anterior a un solo guión: Pitón - "$ @" << 'EOF' – xref

Cuestiones relacionadas