Como parar de executar o script bash quando houver erros? (se problema)

1

Eu construo meu aplicativo usando o Maven. No meu script depois de construir o aplicativo eu inicializo servidor de aplicativos. O problema é que, se a compilação não for bem-sucedida, o servidor de aplicativos será iniciado de qualquer maneira.

Se eu executar (com uma versão inválida que não compila)

mvn compile
echo "$?"
  if [ $? != 0 ]; then
    echo "is not 0"
  else
    echo "is 0"
  fi

a saída é

1
is 0

Como fazer com que o retorno não seja 0 ?

    
por UAdapter 25.11.2011 / 15:59

1 resposta

3

Antes de mais nada, você deve salvar o conteúdo de $? o mais rápido possível, porque cada comando é executado sobrescrevendo seu conteúdo. No seu caso, o $? na instrução if é o status de saída do echo anterior, não de mvn .

Em seguida, para comparação aritmética em bash (e sh ) você precisa usar -ne para diferente de .

Então eu sugiro:

mvn compile
status="$?"
echo "$status"
  if [ $status -ne 0 ]; then
    echo "is not 0"
  else
    echo "is 0"
  fi

Mas isso poderia ser feito de maneira mais elegante com

if ! mvn compile; then
    echo "is not 0"
else
    echo "is 0"
fi
    
por enzotib 25.11.2011 / 16:04