shell 脚本中“elif”和“else if”有什么区别?

shell 脚本中“elif”和“else if”有什么区别?

我对 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

相关内容