Ich möchte wissen, wie man am einfachsten ein Bash-Skript erstellt, mit dem eine App unter MacOSX ausgeführt wird (es ist ein UNIX-basiertes System, daher habe ich angenommen, dass dies der richtige Ort ist). Warten Sie, bis das Programm beendet ist. Wenn der Ausgang kein Absturz war, führen Sie ihn erneut aus. Andernfalls lassen Sie das Fenster für den Absturzbericht geöffnet und beenden Sie das Fenster.
Ich möchte, dass dieses Skript für immer ausgeführt wird, bis es abstürzt oder manuell beendet wird.
Ich habe eine vage Idee, bin mir aber nicht sicher. Folgendes habe ich bisher:
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 hat Euden verrückt gemacht
quelle
quelle
Antworten:
Dies ist, was Bash while-Schleifen tun:
Die Anwendung wird ausgeführt, und wenn sie erfolgreich beendet wird, wird der Hauptteil der Schleife ausgeführt.
:
ist der No-Op-Befehl der Shell (die Schleife muss einen Body haben, also setzen wir das dort ein); Danach geht es zurück nach oben und führt das Programm erneut aus. Wenn dies fehlschlägt, wird die Schleife nicht mehr ausgeführt und das Skript wird beendet.Es sieht jedoch so aus, als ob Sie eine normale Mac-Anwendung ausführen (
.app
): In diesem Fall treten einige Probleme auf. Zum einen müssen Sie denopen
Befehl verwenden , anstatt das Anwendungsverzeichnis direkt auszuführen :open /path/to/application.app
.Das andere ist, dass wenn Sie dies tun
open
, dies normalerweise sofort mit Erfolg beendet wird, unabhängig davon, was die Anwendung tut: Das ist nicht absolut universell, aber die meisten werden es tun. Wenn dies der Fall ist, können Sie die-W
Option verwenden, umopen
das Blockieren zu erzwingen , bis die Anwendung endet :open -W /path/to/application.app
. Beachten Sie, dass, wenn die Anwendung bereits ausgeführt wurde, diese wartet, bis auch die vorhandene Ausführung beendet wird.Wie groß das Problem ist, hängt davon ab, welche Anwendung Sie ausführen. Wenn es nicht gut funktioniert, ist es möglicherweise nicht die beste Option, dies über die Shell zu tun. In diesem Fall ist es wahrscheinlich besser, mit AppleScript zu arbeiten, nach dem Sie auf Ask Different fragen können .
quelle
open
nur bei bestimmten Startfehlern ein Fehler zurückgegeben. Anwendungen werden von einem Systemdienst gestartet, nicht direkt, sodass kein direkter Kommunikationskanal zurück ist. Manchmal ist es möglich, die ausführbare Anwendungsdatei direkt zu starten :/Applications/YourProgram.app/Contents/MacOS/YourProgram
. Andernfalls verlassen wir Unix und gehen an Orte, an denen Sie auf Ask Different eine bessere Antwort erhalten . Sie können AppleScript von der Shell mitosascript
Ich habe das getestet:
Dies funktioniert durch Testen des Rückkehrcodes Ihres Befehls im POSIX-Stil. 0 bedeutet Ok, alles andere kann als Fehler behandelt werden.
quelle