我有这个命令:
grep -E '^nothing' List.txt | echo $?
这里grep没有匹配到任何内容,我只是输出了它的退出码。根据grep的文档:
通常情况下,如果选择了一行,则退出状态为0,如果未选择任何行,则退出状态为1,如果发生错误,则退出状态为2。但是,如果使用了-q或--quiet或--silent选项并选择了一行,则即使发生错误,退出状态也为0。其他grep实现可能会在错误时以大于2的状态退出。
但是:
prompt:user$ grep -E '^nothing' List.txt | echo $?
0
prompt:user$
但是,如果没有匹配项,为什么我会得到0作为输出?我应该得到期望的1个退出代码吗?
;
代替竖线|
。 - Cyrusif grep -qE '^nothing' list.txt; then ...
- tripleee