Команда Unix для выхода из командной строки

Как я могу выйти из командной строки из файла оболочки?

Файл оболочки содержит:

if(); then // some unix code here else // want to exit from cmd prompt or Kill current cmd prompt fi 

может кто знает @ это?

2 Solutions collect form web for “Команда Unix для выхода из командной строки”

Как и Крис Даун , я собираюсь предположить, что вы используете GNU bash. Другие оболочки могут быть разными, но общая идея должна быть одинаковой.

В bash переменная среды $$ содержит идентификатор процесса текущего процесса, а $PPID содержит идентификатор процесса родителя текущего процесса. Как показано на примере Chris, вы можете пойти еще дальше, но / proc является специфичным для Linux.

Вы можете спросить пользователя, следует ли выйти с помощью конструкции, как показано ниже.

 echo "Do you want to exit? (type YES or NO, then Enter)" read answer if test "${answer}" = "YES"; then # insert process killing magic fi # we only get here if the user did not answer "YES" 

Если он доступен, вы можете использовать dialog GNU, чтобы сделать вопрос немного красивее. В этом случае замените весь фрагмент выше следующим образом.

 if dialog --yesno "Do you want to exit?" 10 50; then # insert process killing magic fi # we only get here if the user did not answer "YES" 

Числа 10 50 определяют размер диалогового окна (строки и столбцы, соответственно).

process killing magic может быть чем-то простым, как kill $PPID .

Я предполагаю, что вы имеете в виду, что хотите убить интерактивную оболочку, из которой был взломан скрипт. Я также предполагаю, что эта оболочка – bash .

Если вы используете сценарий в этой оболочке, просто используйте exit . В противном случае отправьте SIGABRT (или другой сигнал, который вызовет выход bash) в родительский pid (интерактивная оболочка), используя что-то вроде этого:

 kill -ABRT "$PPID" 

Или, в оболочках без $PPID (это зависит от Linux):

 read -r _ _ _ ppid _ < "/proc/$$/stat" kill -ABRT "$ppid" 
  • Освежающий меньше на лету
  • Убить процесс чисто
  • Как я могу убить процесс и убедиться, что PID не был повторно использован
  • можно заморозить процесс в Linux и перезагрузить или выключить компьютер. Затем продолжайте процесс, который был заморожен?
  • Что происходит после kill -CONT <PID>?
  • Как убить как процесс, так и подпроцесс?
  • почему имя пользователя не имеет UID?
  • umount застопорился и не смог убить свой процесс
  • Как найти источник нереста?
  • Killing bash заставляет его снова респанировать
  • Как убить упрямый процесс
  • Убийство кометы зомби
  • Interesting Posts

    Что решает, какие модули ядра встроены в ядро ​​статически во время компиляции?

    Как X строит свой модельер?

    Сжатие раздела Windows для установки Fedora 20

    Замените строку в файле и перезапишите файл

    Multi заявление, если условие в bash

    Список всех процессов без управления терминалом (только)?

    IPsec не считывает конфигурацию при удалении туннеля

    Список специальных символов в оболочке

    Как определить, является ли DE Unity или XFCE с помощью сценария оболочки?

    Как я могу проанализировать ini-файл, чьи значения могут содержать определенные символы?

    обработка изображений / клонирование с восстановлением / восстановлением сети DHCP для серверов Solaris 9 и 10

    Как я могу отфильтровать эти «Permission denied» из вывода вывода?

    Как я могу объединить один столбец вывода в список?

    Как создать сетевой интерфейс без генерации связанного маршрута?

    Как остановить предупреждения от обработки ошибок в JHBuild

    Linux и Unix - лучшая ОС в мире.