gpt4 book ai didi

linux - 如何使用 grep 的返回状态值?

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:39 31 4
gpt4 key购买 nike

为什么我的命令没有返回“0”?

grep 'Unable' check_error_output.txt && echo $? | tail -1

如果我删除“echo $?”并使用 tail 获取 check_error_output.txt 中最后一次出现的“Unable”,它会正确返回。如果我删除尾部 -1,或用 && 替换管道,它会按预期返回。

我错过了什么?

最佳答案

以下方法可以在不使用管道或子 shell 的情况下实现您想做的事情

grep -q 'Unable' check_error_output.txt && echo $?

-q 标志代表安静/无声

来自手册页:

Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or --no-messages option. (-q is specified by POSIX.)

这仍然不是安全的,因为“没有这样的文件或目录”错误仍然会出现。

我建议采用以下方法,因为它会输出任一类型的返回值:

grep -q 'Unable' check_error_output.txt 2> /dev/null; echo $?

主要区别是无论失败还是成功,你仍然会得到返回码,错误信息会被定向到/dev/null。注意我如何使用“;”而不是“&&”,使其回显任一类型的返回值。

关于linux - 如何使用 grep 的返回状态值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329966/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com