Tengo una aplicación (herramienta de código cerrado no desarrollada por mí) que requiere que exista otro proceso antes de ejecutarse correctamente. Cuando salgo de esta aplicación, también quiero que se elimine ese proceso personalizado. Mi solución es tener un "lanzador" de script de shell. Puedo manejar la creación de menús de secuencias de comandos de Shell, el evento de cierre y la apertura/eliminación de procesos. El problema es que parece que no puedo descifrar cómo abrir una aplicación desde la Terminal, pero mantengo la Terminal bloqueada en esa aplicación para que cuando cierre la ventana de la Terminal o envíe CTRL+C, la aplicación se cierre. Si está familiarizado con Linux, un ejemplo simple de mi comportamiento deseado es simplemente "archivo gedit.txt". El editor de texto se abriría pero solo viviría mientras lo haga la ventana de la terminal.
En OSX con el comando "abrir", puedo iniciar aplicaciones pero no están vinculadas a la ventana de Terminal. ¿Hay algún comando alternativo que deba usar para lograr este comportamiento?
Aquí está mi guión hasta ahora:
#!/bin/bash
set -e
function cleanup {
osascript -e 'tell application "APP1" to quit'
osascript -e 'tell application "APP2" to quit'
}
trap cleanup EXIT
clear
PS3='Please select an option: '
options=("Start Apps" "Stop Apps")
select opt in "${options[@]}"
do
case $opt in
"Start Apps")
open -a "APP1"
open -a "APP2"
;;
"Stop Apps")
cleanup
;;
*) echo invalid option;;
esac
done
En lugar de usar el comando Unix abierto.
Puede ejecutar el archivo ejecutable de las aplicaciones directamente.
Por ejemplo para TextEdit.app
Ejecutando el comando en Terminal.app
/Applications/TextEdit.app/Contents/MacOS/TextEdit
Esto abrirá TextEdit usando un proceso de Terminal.app
Cuando cierras la ventana de la terminal o usas Ctrl +C
TextEdit se cerrará.
mmmmmm
markhunte
/Applications/TextEdit.app/Contents/MacOS/TextEdit
Sin CausaEfecto
markhunte