Captura do número de erros de sintaxe no script de shell [duplicado]

1

EDIT: esta questão foi marcada como duplicada. Embora isso possa ser verdade em uma escala maior, a resposta fornecida por Kusalananda me deu uma melhor compreensão de minhas opções.

Se ocorrer um erro de sintaxe dentro de um script de shell, a interpretação do script não será necessariamente terminada, mas simplesmente continuará na próxima linha do script. Existe uma maneira de capturar o número desses erros de sintaxe enquanto o script é interpretado?

Eu realmente gostaria de ter algo parecido com um relatório do compilador, informando o número de erros e avisos após a conclusão da compilação. Apenas para shell linux.

    
por YokeM 01.07.2016 / 12:16

1 resposta

1

Sim. A maioria das shells tem o recurso de encerrar o script atual se algum dos comandos nele gerar um erro. Isso geralmente é feito com

set -e

e pode ser desativado com

set +e

EDIT : eu não entendi a pergunta. Bash e outros shells também têm a opção -n que não executa o script, mas verifica se há erros de sintaxe.

$ bash -n script.sh

As opções -e e -n são descritas por POSIX. Para -n , o padrão diz:

The shell shall read commands but does not execute them; this can be used to check for shell script syntax errors. An interactive shell may ignore this option.

CLARIFICATION : Essa resposta está relacionada à verificação de sintaxe, e não à verificação de conformidade com POSIX. Um shell que estende o POSIX com sua própria semântica ainda pode verificar a sintaxe (com -n ) de um script escrito usando a semântica estendida. Isso não diz nada sobre a conformidade POSIX do shell nem do script, somente se o shell script estava sintaticamente correto para o shell em questão, que era a questão.

    
por 01.07.2016 / 12:42