Linux 关于grep的退出价值 Command1没有任何输出 Command2输出“0”

Linux 关于grep的退出价值 Command1没有任何输出 Command2输出“0”,linux,shell,grep,Linux,Shell,Grep,请参阅grep的帮助 退出状态 grep实用程序使用以下值之一退出: (echo "123" | grep "xyz" > /dev/null) && echo $ (echo "123" | grep "123" > /dev/null) && echo $? 我对“表达式1和表达式2”感到困惑。 如果expression1为true,则将执行expression2。对吗 如果grep匹配“123”,它将返回零(0等于false)。如果返回零,ex

请参阅grep的帮助

退出状态 grep实用程序使用以下值之一退出:

(echo "123" | grep "xyz" > /dev/null) && echo $
(echo "123" | grep "123" > /dev/null) && echo $?
我对“表达式1和表达式2”感到困惑。 如果expression1为true,则将执行expression2。对吗


如果grep匹配“123”,它将返回零(0等于false)。如果返回零,expression1将为false。为什么在expression1为false时执行
echo$?

您假定0等于
false
是不正确的。恰恰相反。0表示命令执行成功,正如grep的帮助所说。因此,任何非零退出状态都被视为错误,因此
false
if
语句中常用的
test
命令也是如此

考虑到这一点,该脚本的结果与预期一致

 0     One or more lines were selected.
 1     No lines were selected.
 >1    An error occurred.