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

相关内容