Unix - teste ksh se múltiplas variáveis são 0

1

Então, basicamente eu quero testar se 3 variáveis são 0. Se uma delas não é, deve reportar. Isso é o que eu consegui:

        if [[ $result -ne 0 && $resultmax -ne 0 && $resultmin -ne 0 ]]
        then
            echo "There is something terribly wrong."
        fi

Não funciona. Alguma ideia de onde eu errei? Tentei várias horas, mas acho que estou muito burro / cego agora.

    
por Zottelchen 15.04.2015 / 09:48

3 respostas

1

Se você quiser testar que uma dessas variáveis não é 0, precisará do operador || . Não && .

$ if [[ 1 -ne 0 && 0 -ne 0 && 0 -ne 0 ]] ; then echo "There is something terribly wrong.";  fi

$ if [[ 1 -ne 0 || 0 -ne 0 || 0 -ne 0 ]] ; then echo "There is something terribly wrong.";  fi
There is something terribly wrong.
    
por 15.04.2015 / 09:56
0

Agora você está testando se todas as variáveis não são 0 para relatar erros. Experimente:

if [[ $result -ne 0 || $resultmax -ne 0 || $resultmin -ne 0 ]]
then
    echo "There is something terribly wrong."
fi
    
por 15.04.2015 / 09:57
0

Para testar se alguma das variáveis não é 0, use o operador ou || (como já sugerido):

if [[ $result -ne 0 || $resultmax -ne 0 || $resultmin -ne 0 ]]
then
    echo "There is something terribly wrong."
fi

No entanto, se você estiver fazendo cálculos numéricos e estiver usando ksh (ou bash ou zsh ), talvez prefira usar essa sintaxe para ter clareza:

if (( result != 0 || resultmax != 0 || resultmin != 0 ))
then
    printf "%s\n" "There is something terribly wrong."
fi
    
por 15.04.2015 / 10:12

Tags