Bash 如何在Shell脚本中使用if-else 我正在学习shell脚本,我在大多数语言中都被困了,比如C,C++,0表示false,1表示真,但是在shell脚本下面,我不能理解,如何生成输出< /p> if [ 0 ] then echo "if" else echo "else" fi

Bash 如何在Shell脚本中使用if-else 我正在学习shell脚本,我在大多数语言中都被困了,比如C,C++,0表示false,1表示真,但是在shell脚本下面,我不能理解,如何生成输出< /p> if [ 0 ] then echo "if" else echo "else" fi,bash,shell,Bash,Shell,无论我在if块中写什么,而不是0,我尝试了1,2,true,false,它总是在if条件下运行。这在shell脚本中是如何工作的。 以及当if语句中的表达式为false时shell脚本返回的内容。Bash中没有布尔值。 但以下是一些被解读为虚假的例子: 空值:“ 程序以非零代码退出 示例中的0不是假值,因为它是非空值 值为空的示例: if [ "" ] then echo "if" else echo "else" fi 具有非零退出代码的示例(假设没有名为“不存在”的文件

无论我在if块中写什么,而不是0,我尝试了1,2,true,false,它总是在if条件下运行。这在shell脚本中是如何工作的。
以及当if语句中的表达式为false时shell脚本返回的内容。

Bash中没有布尔值。 但以下是一些被解读为虚假的例子:

  • 空值:“
  • 程序以非零代码退出
示例中的
0
不是假值,因为它是非空值

值为空的示例:

if [ "" ]
then
    echo "if"
else
    echo "else"
fi
具有非零退出代码的示例(假设没有名为“不存在”的文件):

或:

或:


它总是执行
if
部分,因为此条件:

[ 0 ]
将始终为true,因为它检查
[
]
之间的字符串是否不为null/空

要正确评估正确/错误使用,请执行以下操作:

if true; then
   echo "if"
else
   echo "else"
fi

由于字符串不为空,此表达式将返回什么[10-gt 100]。
10-gt 100
是一个有效的shell测试条件,它的计算结果将为false。您可能会发现它很有用。它会自动指出。
if grep -q whatever nonexistent
then
    echo "if"
else
    echo "else"
fi
[ 0 ]
if true; then
   echo "if"
else
   echo "else"
fi