1

Для проверки команды trap я создал следующий цикл в терминале:

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

Как выйти из этого цикла и вернуться к родительской оболочке?

В случае использования удаленной оболочки (ssh) вместо bash в процессе установления соединения возникает задержка, когда я могу нажать Ctrl+C. Но в приведенном выше случае я не могу быть достаточно быстрым, чтобы поймать временное окно.

1 ответ1

2

В этом случае выход из дочерней оболочки приводит к немедленному появлению другой дочерней оболочки. Чтобы разорвать цикл, выполните это из дочерней оболочки:

kill -s SIGINT $PPID

Затем выйдите из дочерней оболочки (exit или Ctrl+D). $PPID гарантирует, что сигнал попадет в родительскую оболочку (не играя с ps и не угадывая).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .