在嵌套 if 构造中用 fi 关闭每个 if 块是否有任何影响?

在嵌套 if 构造中用 fi 关闭每个 if 块是否有任何影响?

由于嵌套 if 块的关闭“fi”不是必需的,除非分隔 else 块(参考:https://stackoverflow.com/a/15328027/1942997),我想知道这样做是否有任何影响,或者这只是一个风格问题。

示例代码1:

if [ condition ]; then
    echo "Not nested, condition 1 true"
    if [ other_condition ]; then
        echo "Nested, condition 2 true"
    else
        echo "Nested, condition 2 false"
    fi
fi

示例代码 2(注意缺少最后一个 fi):

if [ condition ]; then
    echo "Not nested, condition 1 true"
    if [ other_condition ]; then
        echo "Nested, condition 2 true"
    else
        echo "Nested, condition 2 false"
fi

由于习惯于用其他语言的大括号来关闭每个 if 块,因此在 bash 脚本中保留这种行为对我来说似乎是合理的。我能想到的唯一影响是脚本的文件大小略有增加,以提高可读性。

答案1

您将其标记为 bash;如果我不关闭内部if.

引用的 SO Q 说:

if在 bash 中,不存在每个都必须由fi标记 if 块末尾的同伴分隔的情况。

这可以有两种理解:

错误的方法:

在 bash 中,不存在这样的事情:“每个元素都if必须由fi标记 if 块末尾的同伴来分隔。”

正确的方式:

在 bash 中不存在这样的事情 [悬空 else 歧义],因为每个都if必须由fi标记 if 块末尾的同伴来分隔。

相关内容