为什么当我输入bash:if [ false ]; then echo 'ok'; fi;
我得到ok
字符串作为结果?使用变量ok=false; if [ $ok ]; then echo 'ok'; fi;
答案 0 :(得分:10)
if [ false ]
相当于if [ -n "false" ]
- 它正在测试字符串的长度。如果您要测试/bin/false
的退出代码,请使用if false
(无[
,对于许多(但不是全部),现代shell都是一个内置大致相当于{{1 }或/usr/bin/[
)。
答案 1 :(得分:3)
true
和false
不是bash中bolean的内置关键字,就像它们用于其他编程语言一样
您可以按如下方式模拟变量的真/假条件测试:
cond1="true"
cond2="false"
if [ "$cond1" = "true" ]; then
echo "First condition is true"
fi
if [ "$cond2" = "false" ]; then
echo "Second condition is false"
fi
当你这样做时:
if [ false ]
隐含地翻译为
if [ -n "false" ]
-n
表示“如果长度大于0则测试:如果是,则逻辑为真,否则逻辑为假”
除了 - true
和false
实际上做了些什么,但它们是命令:
man true
man false
详细了解它们。