Existe alguma implicação de fechar todos os if-block com fi em uma construção if aninhada?

0

Como fechar "fi" s para if-blocks aninhados não é necessário, exceto quando delimitarmos else-blocks (ref: link ), eu queria saber se houve alguma implicação ao fazer isso ou se é apenas uma questão de estilo.

Exemplo de código 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

Exemplo de código 2 (observe o último fi ausente):

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

Sendo usado para fechar todos os blocos if com chaves de outras linguagens, parece razoável para mim manter esse comportamento no script do bash. O único impacto que eu pude pensar foi no tamanho do arquivo marginalmente aumentado do script em favor de uma melhor legibilidade.

    
por Pirm 22.02.2016 / 14:53

1 resposta

1

Você marcou isso como bash; Eu recebo "erro de sintaxe: final inesperado do arquivo" se eu não fechar o interior if .

O referenciado SO Q diz:

In bash there isn't such a thing as every if has to be delimited by a companion fi marking the end of the if block.

que pode ser entendido de duas maneiras:

O caminho errado:

In bash there isn't such a thing as: "every if has to be delimited by a companion fi marking the end of the if block."

O caminho certo:

In bash there isn't such a thing [as dangling else ambiguity], as every if has to be delimited by a companion fi marking the end of the if block.

    
por 22.02.2016 / 15:08