Причинити "менше" для виходу з ненульовим кодом статусу?


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, пропустіть це, але вам доведеться подати сигнал, а потім введіть також кинути.


less -Kяк і раніше повертає код виходу 0 на ctrl-c. v418 на Mac і v436 на Linux. less -K test; echo $? => 0
Метт

це сумно. на екрані v458 і v481 для мене це нормально. Сторінка man для -Kявно говорить вихід ... (зі статусом 2) . Ваш?
meuh

людина говорить лише 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.