Wie schreibe ich ein Skript in ksh, um das Terminal zu verlassen?

364
Rohan Rana

Ich schreibe ein Shell-Skript. Ich habe caseAussagen zu bestimmten Sachen gemacht. Ich habe eine Option / einen Fall, da qdas 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.

0
Welche Anwendung führt das Terminal aus? In vielen Fällen muss der Anwendung lediglich mitgeteilt werden, dass das Fenster geschlossen werden soll, wenn das Skript beendet ist. xenoid vor 7 Jahren 0
Ich verwende Kitt. Und ja, ich stimme zu, dass wir die Einstellung auch in der Anwendung vornehmen können. aber ab jetzt ist es meine Anforderung, nur durch ein Skript zu tun. Rohan Rana vor 7 Jahren 0

2 Antworten auf die Frage

1
iBug

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.

Hallo, danke für die Antwort. Ich habe beide Möglichkeiten ausprobiert, aber es funktioniert nicht für mich Rohan Rana vor 7 Jahren 0
0
Kamil Maciorowski

kshunterstützt $PPID. Diese Variable gibt die Prozessnummer des übergeordneten Elements der kshShell an.

Wenn Ihr Skript also von einer beliebigen Shell aus ausgeführt wird (und kshaufgrund 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 nohupeinem ä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).