gpt4 book ai didi

shell - shell中true和false的值

转载 作者:行者123 更新时间:2023-12-04 05:34:03 26 4
gpt4 key购买 nike

我在 shell 中读到,
true 命令返回 0 => 逻辑真。
false 命令返回 1 => 逻辑错误。
但是当我运行时,我得到了令人惊讶的结果。

if [ 0 ]
then
echo "0 is true."
else
echo "0 is false."
fi

if [ 1 ]
then
echo "1 is true."
else
echo "1 is false."
fi

if [ false ]
then
echo "false is true."
else
echo "false is false."
fi

if [ true ]
then
echo "true is true."
else
echo "true is false."
fi

我得到这些结果。

0 是真的。
1 是真的。
假是真的。
真的是真的。

最佳答案

测试if [ 0 ]测试是否0是空字符串(不是),如果不为空则返回 true。测试if [ 1 ]同样测试是否1是空字符串,如果不为空则返回 true。同样,其他两个测试检查字符串 true 是否和 false空...

如果要测试命令,请执行以下命令:

if false; then echo False is true; else echo False is false; fi
if true ; then echo True is true; else echo True is false; fi

大多数机器没有名为 0 的命令或 1 ,所以你不能轻易地将它们作为命令调用。

您还可以尝试:
if sh -c "exit 1"; then echo Shell exited as true; else echo Shell exited as false; fi
if sh -c "exit 0"; then echo Shell exited as true; else echo Shell exited as false; fi

在第 7 版 Unix 中, /bin/test (或可能 /usr/bin/test)是测试程序,但您通常会找到一个链接 /bin/[ .当它被名称 [ 调用时,它要求它的最后一个参数是 ] ,所以你可以写一个方括号条件。 (使用 macOS 10.14.6 Mojave 的 Mac 仍然有 /bin/[ — 它仍然有效。Linux 系统通常有 /usr/bin/[,它仍然有效。)

不久之后, test操作被内置到 shell 中,而不是一个单独的可执行文件,但语义基本保持不变。因为它们现在不同(内置与可执行),有时测试操作具有不同的功能。 POSIX 定义了一个基线;各种 shell 和系统提供了各种扩展。

直到今天, autoconf套件推荐使用 test[ ,但这主要是因为它使用方括号用于其他目的。

关于shell - shell中true和false的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com