由于嵌套 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 块末尾的同伴来分隔。