Ich habe eine Anwendung (Closed-Source-Tool, das nicht von mir entwickelt wurde), für die ein anderer Prozess vorhanden sein muss, bevor sie ordnungsgemäß ausgeführt werden kann. Wenn ich diese Anwendung beende, möchte ich auch, dass dieser benutzerdefinierte Prozess beendet wird. Meine Lösung besteht darin, ein Shell-Skript "Launcher" zu haben. Ich kann das Erstellen von Shell-Skriptmenüs, das On-Close-Ereignis und das Öffnen/Beenden der Prozesse handhaben. Das Problem ist, dass ich anscheinend nicht herausfinden kann, wie man eine Anwendung über Terminal öffnet, aber Terminal für diese Anwendung gesperrt hält, sodass die Anwendung geschlossen wird, wenn ich das Terminalfenster schließe oder STRG + C sende. Wenn Sie mit Linux vertraut sind, ist ein einfaches Beispiel für mein gewünschtes Verhalten nur "gedit file.txt". Der Texteditor würde sich öffnen, aber er lebt nur so lange wie das Terminalfenster.
Unter OSX kann ich mit dem Befehl "Öffnen" Anwendungen starten, aber sie sind nicht mit dem Terminalfenster verknüpft. Gibt es einen alternativen Befehl, den ich verwenden sollte, um dieses Verhalten zu erreichen?
Hier mein bisheriges Skript:
#!/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
Anstatt den Unix-Befehl open zu verwenden.
Sie können die ausführbare Datei der Anwendungen direkt ausführen.
Zum Beispiel für TextEdit.app
Ausführen des Befehls in Terminal.app
/Applications/TextEdit.app/Contents/MacOS/TextEdit
Dadurch wird TextEdit mit einem Prozess von Terminal.app geöffnet
Wenn Sie das Terminalfenster schließen oder Ctrl + verwendenC
TextEdit wird beendet.
mmmmmm
Markhunte
/Applications/TextEdit.app/Contents/MacOS/TextEdit
UrsacheloseWirkung
Markhunte