Bash脚本中if条件判断用法解析 #bash
在 Bash 脚本中,if [ false ]; then ... fi
的行为可能和你预期的不一样。让我解释一下:
问题分析
当你写 if [ false ]; then ... fi
时,实际上发生的是:
[ false ]
是一个 test 命令([
是test
命令的别名)- 它检查字符串 “false” 是否非空
- 因为 “false” 是一个非空字符串,所以 test 命令返回 true(退出状态码 0)
正确写法
如果你想要检查一个命令的返回状态(比如 false
命令),应该这样写:
if false; then
echo "This won't execute"
else
echo "This will execute"
fi
或者如果你想使用 test 命令检查布尔条件:
if [ "$var" = false ]; then
echo "var is the string 'false'"
fi
其他常见用法
检查命令是否成功:
if some_command; then echo "Command succeeded" fi
检查变量是否为真值:
if [ "$var" = true ]; then echo "var is true" fi
使用算术比较:
if (( 1 == 1 )); then echo "Math is correct" fi
记住在 Bash 中,true
和 false
实际上是命令(返回 0 和非 0 退出状态),而不是布尔值。