Bash双条件test命令执行异常:为何出现‘command not found’与false?
问题原因分析
你的命令执行出错并输出false,核心原因是**&&后面的"5" = "5"不是合法的Bash命令**:
- 首先,
test "4" = "4"执行成功(返回状态码0),触发&&后的语句执行。 - Bash会把
"5" = "5"解析为「尝试运行名为5的命令,参数是=和5」,但系统中不存在名为5的命令,因此报错5: command not found,这条语句返回非0的状态码。 - 由于
&&后的命令执行失败,触发了后续的|| echo "false",最终输出false。
正确写法示例
要实现两个条件同时判断的逻辑,有几种正确方式:
方式1:在同一个
test命令中用-a连接两个条件test "4" = "4" -a "5" = "5" || echo "false"方式2:用
&&连接两个独立的test命令test "4" = "4" && test "5" = "5" || echo "false"方式3:使用Bash的扩展测试语法
[[ ]](推荐,支持更直观的逻辑运算符)[[ "4" = "4" && "5" = "5" ]] || echo "false"
内容的提问来源于stack exchange,提问作者Zvi Rosenfeld
相关产品推荐
相关产品推荐

