我很难理解为什么下面返回的代码是1.

echo 'Total' | grep -c No
0

所以"不"不存在于"总计"中.但在查找其返回码时,我将其视为1.

echo $?
1

为什么返回码显示为1?有办法解决这个问题吗?

推荐答案

根据man grep页,-c面旗帜代表

-c、 --伯爵

所以你看到的是比赛的计数,不要与grep场比赛的退出代码混淆.代码1是因为没有与输入匹配的行.

看看另一个案子,

echo 'No' | grep -c No
1

echo $?
0

同样要阅读man grep页的EXIT CODES页,

退出状态

Linux相关问答推荐

C++调试器如何知道如何在源代码和可执行文件之间映射行?

使用sed命令将记录中的字符串替换为DD-MMM-YYYY日期格式

使用 grep 时如何跳过第一行和最后一行?

如何在bash中用另一个整数变量增加一个整数变量?

使用 sed linux 命令和 i sed 命令进行 preprend 时的反向引用

根据文件名对目录中的文件进行 chgrp

Dockerfile:无法复制文件

我可以阅读 Linux 内核的哪些部分以获得乐趣?

使用带有 gnome-keyring 的 Git 凭证助手作为 Sudo 时出错

如何将通配符参数传递给 bash 文件

使用 awk 或 sed 删除特定字符

C.UTF-8 和 en_US.UTF-8 语言环境有什么区别?

php.ini 更改,但在 Ubuntu 上无效

并行运行 shell 脚本

为什么`du`的输出通常与`du -b`如此不同

如何在 Linux 中删除早于特定日期的文件?

Vim 增量搜索

Linux 的文本编辑器(除了 Vi)?

构建窗口管理器

crontab 在特定小时之间每 15 分钟运行一次