Вызывает ли `less` выход с ненулевым кодом состояния?


10

Я хотел бы иметь следующую структуру команд:

command && check-status | less && followup-command

Это приостановит выполнение, пока пользователь взаимодействует с less. Как пользователь может заставить lessвыйти с ненулевым статусом, чтобы предотвратить followup-commandзапуск?

Я сейчас пользуюсь less 458 (POSIX regular expressions)

Ответы:


14

В простом случае вы можете попросить lessне обрабатывать SIGINT, затем Control-Cубьете его, и код выхода будет ненулевым. Сделайте это с опцией -K.

command && check-status | less -K && followup-command

В качестве обходного пути для более старых версий менее, вы можете сделать что-то вроде

command && bash -c 'trap "exit 1" int;check-status | less -K;' && followup-command

Если у вас его нет -K, опустите его, но вам нужно будет подать сигнал, а затем набрать quit.


less -Kпо-прежнему возвращает 0 код выхода на Ctrl-C для меня. v418 на Mac и v436 на Linux. less -K test; echo $? => 0
Мэтт

печально. это нормально для v458 и v481 для меня. Страница man для -Kявно говорит о выходе ... (со статусом 2) . Твой?
Мех

человек только говорит Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Мэтт

Я добавил обходной путь для старшего меньше.
meuh

2
Обратите внимание, что ^Cон также убьет, check-statusесли он еще не закончен.
Стефан Шазелас
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.