Я пишу сценарий оболочки. Я использовал case отношении определенных вещей. У меня есть опция /case как q которая должна выйти из терминала.

 case "$i" in
         1) some script. ;;
         q) break && exit;;

но это только выход из скрипта, а не терминала.

Может ли кто-нибудь помочь мне в этом? Обратите внимание, что оболочка ksh .

2 ответа2

1

Плохой подход

q) kill ksh

Хороший подход

В вашей основной оболочке сделайте это

alias yourscript='exec yourscript'

таким образом, сценарий принимает оболочку и завершает ее.

0

ksh поддерживает $PPID . Эта переменная идентифицирует номер процесса родителя оболочки ksh .

Так что, если ваш скрипт запускается из любой оболочки (и он интерпретируется ksh из-за своего шебанга), то это должно заставить эту оболочку завершиться:

kill -s SIGHUP $PPID

Обратите внимание, что это также убьет скрипт, если скрипт не был вызван с nohup или не был использован какой-то подобный трюк.

Затем ваш эмулятор терминала должен выйти автоматически, если не настроено иначе (например, PuTTY имеет опцию "Закрыть окно при выходе", которая может быть установлена на "Никогда").

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