Ponto-e-vírgula em estruturas condicionais

25

Por que colocar ponto e vírgula em um e não em outro?

O resultado é o mesmo

Código um

if [ "a" == "a" ]
then
 echo "true"
fi

Código dois

if [ "a" == "a" ];
then
 echo "true";
fi

Ponto e vírgula no segundo código é desnecessário?

Quando é necessário colocar ponto e vírgula?

    
por Jhonathan 21.09.2012 / 21:02

2 respostas

24

O ponto e vírgula é necessário apenas quando o fim da linha está ausente:

if [ "a" == "a" ] ; then echo "true" ; fi

Sem ponto e vírgula, você recebe um erro de sintaxe.

Eu não entendo sua pergunta sobre cotações. Você pode ser mais específico?

(E, a propósito, usar = em vez de == é mais portável e compatível com POSIX).

    
por 21.09.2012 / 21:05
4

O ponto-e-vírgula é usado com frequência porque algumas pessoas (/ me, por exemplo) gostam de um estilo como este:

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

Portanto, se a palavra-chave then for colocada na linha de condição, ela será necessária porque um novo comando será iniciado, conforme escrito por choroba.

Com relação às aspas na verificação de condição, elas são frequentemente usadas com variáveis para garantir que nenhuma exceção ocorra se nada for atribuído à variável. Este é um estilo mais seguro e parece desnecessário, mas mesmo em programação de shell, de tempos em tempos, os programas são processados, embora o conteúdo não possa ser atribuído a variáveis. Então o comando ainda está funcionando porque uma string vazia é comparada.

    
por 22.09.2012 / 10:22