(echo "123" | grep "xyz" > /dev/null) && echo $
(echo "123" | grep "123" > /dev/null) && echo $?
请参阅grep。
的帮助退出状态 grep实用程序以下列值之一退出:
0 One or more lines were selected. 1 No lines were selected. >1 An error occurred.
我对"表达1&&表达式2&#34 ;. 如果expression1为true,则执行expression2。是吗?
如果grep匹配" 123",它将返回零(0等于false)。如果返回零,则expression1将为false。当expression1为false时,为什么echo $?
被执行?
答案 0 :(得分:1)
您的假设0等于false
是不正确的。情况正好相反。 0表示命令执行成功,就像grep
的帮助所说的那样。因此,任何非零退出状态都被视为错误,因此false
。 test
语句中常用的if
命令也是如此。
考虑到这一点,此脚本的结果符合预期。