So beenden Sie die Endlosschleife im übergeordneten Terminal

562
Orient

Um den trapBefehl zu testen, habe ich die folgende Schleife im Terminal erstellt:

while true ; do echo BEGIN ; bash -e ; echo "exit code = $?" ; echo END ; done 

Wie kann man diese Schleife beenden und zur übergeordneten Shell zurückkehren?

Im Falle der Verwendung von Remote Shell ( ssh) anstelle basheiner Verzögerung beim Verbindungsaufbau, wenn ich drücken kann Ctrl+C. Aber im obigen Fall kann ich nicht schnell genug sein, um das Zeitfenster zu erfassen.

1

1 Antwort auf die Frage

2
Kamil Maciorowski

In diesem Fall wird beim Beenden der untergeordneten Shell sofort eine andere untergeordnete Shell angezeigt. Um die Schleife zu brechen, führen Sie dies innerhalb der untergeordneten Shell aus:

kill -s SIGINT $PPID 

Beenden Sie dann die untergeordnete Shell ( exitoder Ctrl+ D). $PPIDstellt sicher, dass das Signal an die übergeordnete Shell gelangt (ohne zu spielen psund zu raten).

"SIGINT" ist Strg + C? Orient vor 6 Jahren 0
@Orient. Ja. Siehe [diese Frage] (https://unix.stackexchange.com/q/362559/108618). Kamil Maciorowski vor 6 Jahren 0