Schlechter Ansatz
q) kill ksh
Guter Ansatz
Tun Sie dies in Ihrer Shell
alias yourscript='exec yourscript'
Das Skript übernimmt also die Shell und verlässt die Shell nach dem Beenden.
Ich schreibe ein Shell-Skript. Ich habe case
Aussagen zu bestimmten Sachen gemacht. Ich habe eine Option / einen Fall, da q
das Terminal verlassen werden sollte.
case "$i" in 1) some script. ;; q) break && exit;;
Es wird jedoch nur das Skript verlassen, nicht das Terminal.
Kann mir da jemand weiterhelfen? Beachten Sie die Shell ist ksh
.
q) kill ksh
Tun Sie dies in Ihrer Shell
alias yourscript='exec yourscript'
Das Skript übernimmt also die Shell und verlässt die Shell nach dem Beenden.
ksh
unterstützt $PPID
. Diese Variable gibt die Prozessnummer des übergeordneten Elements der ksh
Shell an.
Wenn Ihr Skript also von einer beliebigen Shell aus ausgeführt wird (und ksh
aufgrund seines Shebang interpretiert wird ), sollte dies die Shell beenden:
kill -s SIGHUP $PPID
Beachten Sie, dass das Skript auch abgebrochen wird, es sei denn, das Skript wurde mit nohup
einem ähnlichen Trick aufgerufen .
Ihr Terminal-Emulator sollte dann automatisch beendet werden, wenn dies nicht anders konfiguriert ist (z. B. hat PuTTY die Option "Fenster beim Beenden schließen", die auf "Nie" gesetzt werden kann).