导致`less`以非零状态码退出?


10

我希望具有以下命令结构:

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

当用户与进行交互时,这将暂停执行less。用户如何强制less以非零状态退出以阻止followup-command运行?

我目前正在使用 less 458 (POSIX regular expressions)

Answers:


14

在简单的情况下,您可以要求less不处理SIGINT,然后Control-C将其杀死,并且退出代码将为非零。使用option做到这一点-K

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

作为较早版本的less的解决方法,您可以执行以下操作

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

如果没有-K,请省略它,但是您必须发出信号,然后键入quit。


less -K仍然为我在ctrl-c上返回了0退出代码。在Mac上为v418,在Linux上为v436。less -K test; echo $? => 0
马特

真伤心 对我来说,在v458和v481上还可以。手册页-K明确指出exit ...(状态为2)。是你的吗?
meuh

人只说Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
马特

我为年龄较小的人添加了解决方法。
meuh

2
请注意,如果尚未完成,^C也会杀死check-status
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.