Unix - ksh는 여러 변수가 0인지 테스트합니다.

Unix - ksh는 여러 변수가 0인지 테스트합니다.

그래서 기본적으로 3개의 변수가 0인지 테스트하고 싶습니다. 그 중 하나라도 해당되지 않으면 신고해야 합니다. 이것이 내가 얻는 것입니다:

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

이것은 작동하지 않습니다. 내가 어디서 망쳤는지 아세요?

답변1

테스트하고 싶다면하나이 변수의 개수는 0이 아니므로 ||연산자가 필요합니다. 아니요 &&.

$ 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.

답변2

이제 모든 변수가 0이 아닌지 테스트하고 오류가 보고됩니다. 노력하다:

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

답변3

변수가 0이 아닌지 테스트하려면 or 연산자를 사용하십시오 ||(이미 제안한 대로).

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

그러나 수치 계산을 수행하고 ksh(or bash, or zsh)를 사용하는 경우 명확성을 위해 다음 구문을 사용하는 것이 좋습니다.

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

관련 정보