Как написать скрипт на ksh для выхода из терминала?

281
Rohan Rana

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

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

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

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

0
Какое приложение запускает терминал? Во многих случаях было бы просто сказать, что приложение закрывает окно, когда ваш скрипт заканчивается. xenoid 7 лет назад 0
Я использую замазку. И да, я согласен, мы можем сделать настройку в приложении тоже. но на данный момент мое требование - делать только через скрипт. Rohan Rana 7 лет назад 0

2 ответа на вопрос

1
iBug

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

q) kill ksh 

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

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

alias yourscript='exec yourscript' 

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

Привет, спасибо за ответ. Я пробовал оба пути, но это не работает для меня Rohan Rana 7 лет назад 0
0
Kamil Maciorowski

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

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

kill -s SIGHUP $PPID 

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

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

Похожие вопросы