Me gustaría conocer la forma más fácil de crear un script bash que ejecute una aplicación en MacOSX (es un sistema basado en UNIX, así que supuse que este era el lugar correcto). Espere a que el programa salga. Si la salida no fue un accidente, ejecútelo nuevamente. De lo contrario, deje abierta la ventana del informe de bloqueo y salga.
Me gustaría que este script se ejecute para siempre hasta el bloqueo o la finalización manual.
Tengo una idea vaga pero no estoy seguro. Esto es lo que tengo hasta ahora:
echo "Launching Autorun…"
if ["$1" -eq "0"]; then
# Application exited successfully. Restarting.
/path/to/application.app
else
# An error occured. Do nothing and exit.
exit
fi
bash
shell-script
osx
Ben enloquecido Euden
fuente
fuente
Respuestas:
Esto es lo que hace Bash while loops :
Ejecutará la aplicación y, si finaliza con éxito, ejecutará el cuerpo del bucle.
:
es el comando no operativo del shell (el bucle debe tener un cuerpo, así que eso es lo que ponemos allí); después de eso vuelve a la cima y ejecuta el programa nuevamente. Si falla, el bucle deja de ejecutarse y el script se cierra.Sin embargo, parece que lo que está ejecutando podría ser una aplicación Mac normal (
.app
): hay un par de problemas que surgen en ese caso. Una es que es necesario utilizar elopen
comando , en lugar de correr el directorio de la aplicación directa:open /path/to/application.app
.La otra es que cuando lo haga
open
, generalmente terminará inmediatamente con éxito, independientemente de lo que la aplicación haga: eso no es absolutamente universal, pero la mayoría lo hará. Si el lo hace, puede utilizar la-W
opción para forzaropen
a bloquear hasta que los extremos de aplicación:open -W /path/to/application.app
. Tenga en cuenta que si la aplicación ya se estaba ejecutando, esto esperará hasta que la ejecución existente también finalice.La cantidad de un problema depende de la aplicación que esté ejecutando. Si no funciona bien, hacer esto desde el shell puede no ser la mejor opción. En ese caso, probablemente sea mejor usar AppleScript, que puede consultar en Ask Different .
fuente
open
solo devuelve fallas para ciertos errores de inicio. Las aplicaciones son iniciadas por un servicio del sistema, no directamente, por lo que no hay canal de comunicaciones directo de regreso. A veces es posible iniciar el ejecutable de la aplicación directa:/Applications/YourProgram.app/Contents/MacOS/YourProgram
. De lo contrario, saldremos de Unix y nos dirigiremos a lugares en los que obtendrá una mejor respuesta en Pregunte diferente . Puede ejecutar AppleScript desde el shell conosascript
He probado esto:
Esto funciona probando el código de retorno de su comando, estilo POSIX. 0 significa Ok, cualquier otra cosa puede ser tratada como un error.
fuente