[

[

作为一个非常困惑的新手,这是怎么回事?如果声明和[ ]、[[ ]]、( )、(( ))

为什么是

if [ $jengnr -eq 1 ]; then

正确,但这里是双重的:

if [[ -f "$jdir$object.eng.dat" ]]; then

然后我读到 if 内的嵌套 if 应该是 (( )) (不是我的代码)

#!/bin/bash
# Nested if statements
if [ $1 -gt 100 ]
then
echo Hey that\'s a large number.
if (( $1 % 2 == 0 ))
then
echo And is also an even number.
fi
fi

但我在 if [[ ]] 语句内的 if 语句中使用了 [[ ]],这有效吗?

有人可以解释一下什么、谁以及为什么有 4 个不同的 if 吗?

..什么时候正确使用它们?

答案1

[

这是 shell 测试命令(有时也是内置命令),是执行 shell 测试的可移植方法。

[[

这通常被称为“扩展测试”,它主要仅由 ksh 和 bash 支持,并且允许比 shell 测试更多的功能,但不那么可移植

(

这根本不是一个测试命令,单括号将创建一个子 shell。 if 语句只是评估它们后面的命令的返回代码,因此 usingif ( command ); then可以工作,但它只是评估子 shell 的返回。

((

if这允许 shell 算术,当您在算术相关条件上进行测试时,可以将其结合使用。


另外请注意,嵌套 if 语句没有这样的规则,您可以在任何嵌套级别使用这些方法的任意组合。

相关内容