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