ksh - Ctrl-D карты для выхода из оболочки

Нет никакого стандартного добавления отступа в сценариях оболочки, которое имеет значение.

Немного меньше легкомысленного ответа:

  • Выберите стандарт в своей команде, что можно все работать к, для упрощения вещей.
  • Используйте что-то, что Ваш редактор делает легким, таким образом, Вы не должны бороться для придерживаний стандарта.
0
24.05.2016, 15:57
2 ответа

Вы хотите stty команда: посмотрите, как ^D отображается с stty -a. Можно изменить это на что-то еще с stty eof char: Удалите "eof", устанавливающий с stty eof undef


Непротестированный: Вы хотите читать о trap команда в ksh странице справочника. Это могло бы быть достаточно, чтобы Вы настроили обработчик для EXIT сигнал.

# warning: completely untested
exit_handler() { echo "exit"; exit; }
trap exit_handler EXIT
1
28.01.2020, 02:21
  • 1
    Для удаления терминальной привязки использовать ^- или undef как ключ, например. stty eof under. Это указано в POSIX. –  Gilles 'SO- stop being evil' 09.02.2013, 00:41
  • 2
    @glenn посмотрите мое обновление. –  mtk 12.02.2013, 10:43

Ctrl + D (ASCII EOT ) ) уже находится , отображаемый для выхода из оболочки, в обоих VI и мод EMACS Как объясняет KSH93 ручной страницы. Это совсем так, от вашего сценария захвата.

Ручная страница также объясняет, что здесь прокомментировали другие, что этот ключ имеет только этот эффект, если линия пуста. (Это имитирует стандартное поведение линии дисциплины в приготовленном режиме.)

То, что вам не хватает, что также объясняется страницей Ручной, состоит в том, что у вас есть параметр INGLOREEEF . Таким образом, раковина Корна видела Ctrl + D на пустой линии и проигнорировала его, печатая о том, что вы видите, чтобы объяснить, что с INGLOREEEF Установите на вас, должны явно использовать команду Exit .

Так что забудьте о STTY и обработчиков ловушек, как и в другом ответе; И просто:

set -o noignoreeof

Дальше чтение

3
28.01.2020, 02:21

Теги

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