私は次のif
文を持っています:
if [ "$sourcelast" = "$maxhostlast" ] || [ "$sourcelast" = "$minhostlast" ] || [ "$sourcelast" < "$maxhostlast" ] || [ "$sourcelast" > "$minhostlast" ] ;then ... fi
/dev/null
今、エラーが発生するたびにエラーメッセージを送信したいと思います。
どうすればいいですか?
答え1
続行する前に構文を変更する必要があります。以前のテストの比較演算子ではなく>
、<
シェルリダイレクト演算子です[...]
。\<
一部のシェルではこれをエスケープして\>
文字列比較を保持できます。、または新しいテストを使用してください[[...]]
。
この場合、数値比較をしたいように聞こえるので、標準演算子、、、、-lt
を-le
使用-gt
する必要があります-ge
。
if [ "$sourcelast" = "$maxhostlast" ] ||
[ "$sourcelast" = "$minhostlast" ] ||
[ "$sourcelast" -lt "$maxhostlast" ] ||
[ "$sourcelast" -gt "$minhostlast" ]
then
: "Do something"
fi
すべての条件ですべてのエラーメッセージをリダイレクトするには、そのメッセージをサブシェルにラップします。
if (
[ "$sourcelast" = "$maxhostlast" ] ||
[ "$sourcelast" = "$minhostlast" ] ||
[ "$sourcelast" -lt "$maxhostlast" ] ||
[ "$sourcelast" -gt "$minhostlast" ]
) 2>/dev/null
then
: "Do something"
fi