Por que meu script não está recebendo o código de saída do umount?

4

Esta é a primeira vez que tento escrever um longo script para gerenciar um servidor que eu executo, e ao usar "set -ex" o script sai quando umount falha. Eu pensei que minha declaração se pegaria, mas o script sai antes que o eco seja disparado.

O que eu estou negligenciando aqui?

umount $MOUNTPATH
if [[ $? -ne 0 ]];
then
  /bin/echo "Failed to unmount!  Already unmounted?"
fi
    
por Jeff 17.11.2012 / 03:46

2 respostas

4

set -e fará o shell sair assim que um comando falhar. Ou seja, assim que o comando unmount for concluído. O if não pode pegá-lo, pois o script sai antes mesmo de chegar ao if . Você pode corrigir isso colocando o comando unmount em a condição if (negada com ! para fazer com que ela execute a cláusula then se a desmontagem falhar, em vez de ser bem-sucedida):

if ! unmount $MOUNTPATH; then
    /bin/echo "Failed to unmount!  Already unmounted?"
fi
    
por 17.11.2012 / 03:59
1

A questão é que você tem um ponto e vírgula depois da sua declaração if.

umount $MOUNTPATH
if [[ $? -ne 0 ]]
then
  /bin/echo "Failed to unmount!  Already unmounted?"
fi

Isso deve resolver isso.

Fontes: link

    
por 17.11.2012 / 03:56

Tags