Unix - kshは複数の変数がゼロであるかどうかをテストします。

Unix - kshは複数の変数がゼロであるかどうかをテストします。

だから基本的に3つの変数が0かどうかをテストしたいと思います。そのうちの1つに該当しない場合は、報告する必要があります。これが私が得るものです:

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

これはうまくいきません。どこで台無しにしたのか知ってますか?

答え1

テストしたい場合一つこの変数の数はゼロではないため、||演算子が必要です。いいえ&&

$ 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

すべての変数がゼロでないことをテストし、エラーが報告されます。努力する:

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

答え3

変数がゼロでないことをテストするには、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

関連情報