我有以下if
声明:
if [ "$sourcelast" = "$maxhostlast" ] || [ "$sourcelast" = "$minhostlast" ] || [ "$sourcelast" < "$maxhostlast" ] || [ "$sourcelast" > "$minhostlast" ] ;then ... fi
/dev/null
现在我希望每次发生错误时都会发送错误消息。
我怎样才能做到这一点?
答案1
在继续之前,您必须修复语法。>
和<
是 shell 重定向运算符,而不是旧 test 中的比较运算符[...]
。在某些 shell 中,您可以转义它们\<
并\>
存档字符串比较,或使用新的测试[[...]]
。
在这种情况下,听起来您想要进行数字比较,因此您应该坚持使用标准运算符-lt
, -le
, -gt
, -ge
:
if [ "$sourcelast" = "$maxhostlast" ] ||
[ "$sourcelast" = "$minhostlast" ] ||
[ "$sourcelast" -lt "$maxhostlast" ] ||
[ "$sourcelast" -gt "$minhostlast" ]
then
: "Do something"
fi
要重定向所有条件下的所有错误消息,您只需将它们包装在子 shell 中:
if (
[ "$sourcelast" = "$maxhostlast" ] ||
[ "$sourcelast" = "$minhostlast" ] ||
[ "$sourcelast" -lt "$maxhostlast" ] ||
[ "$sourcelast" -gt "$minhostlast" ]
) 2>/dev/null
then
: "Do something"
fi