我对 shell 脚本还很陌生。
当我看到一些为什(#!/bin/ksh
)我看到在一个脚本中else if
也有使用。elif
那么, shell 脚本中的else if
和有什么区别?elif
答案1
我尝试用一句话来回答:如果你使用elif
你处理一个 if 子句,如果你else if
使用两个 if 子句。
看看这些简单的例子:
testone() {
if [[ $CASE == 1 ]]; then
echo Case 1.
elif [[ $CASE == 2 ]]; then
echo Case 2.
else
echo Unknown case.
fi
}
这是一个正式的(整洁的缩进有时是有意义的) if 子句,正如您所见,每个案例都处于相同的层次结构级别。
现在,使用相同的函数else if
:
testtwo() {
if [[ $CASE == 1 ]]; then
echo Case 1.
else
if [[ $CASE == 2 ]]; then
echo Case 2.
else
echo Unknown case.
fi
fi
}
您正式拥有两个级联 if 子句,因此也拥有两个结束语句。请注意,在这里,如果我写一行(如您的问题中所示)或两行(如我的示例中所示),则fi
没有任何区别。else if
我猜想为什么在同一个脚本中使用这两种形式:如果您已经编写了完整的 if 子句,但需要(逻辑原因)将其复制/剪切并粘贴到现有的 if 子句中,那么您最终会得到else if
。但是当您从头开始编写完整的 if 子句时,您可能会使用 IMHO 更简单易读的形式elif
。