だから基本的に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