Qual é a diferença entre “elif” e “else if” no shell script?

4

Sou muito novo no shell de scripts.

Quando vejo um código escrito para ksh ( #!/bin/ksh ), vejo que há else if e elif usados em um script.

Então, qual é a diferença entre else if e elif no shell script?

    
por Zeena Pinto 17.10.2014 / 23:09

1 resposta

5

Eu tento uma resposta em uma frase: Se você usa elif , lida com uma cláusula if , se você usa else if com duas cláusulas if .

Veja estes exemplos simples:

testone() {
  if [[ $CASE == 1 ]]; then
    echo Case 1.
  elif [[ $CASE == 2 ]]; then
    echo Case 2.
  else 
    echo Unknown case.
  fi
}

Isso é formalmente (a indução arrumada faz sentido às vezes) uma cláusula if, como você pode ver, que cada caso está no mesmo nível de hierarquia.

Agora, a mesma função com else if :

testtwo() {
  if [[ $CASE == 1 ]]; then
    echo Case 1.
  else
    if [[ $CASE == 2 ]]; then
      echo Case 2.
    else 
      echo Unknown case.
    fi
  fi
}

Você tem formalmente duas cláusulas if em cascata e, consequentemente, duas instruções fi de fechamento. Por favor, note que não faz diferença aqui se eu escrevo else if em uma linha (como na sua pergunta) ou em duas linhas (como no meu exemplo).

Meu palpite por que ambos os formulários são usados no mesmo script: Se você já tem uma cláusula if completa escrita, mas precisa (motivos lógicos) para copiar / cortar & cole isso em uma cláusula if existente, você acaba com else if . Mas quando você escreve a completa cláusula if do zero, você provavelmente usa o formulário IMHO mais simples para ler elif .

    
por 19.10.2014 / 17:14

Tags