Прежде чем идти дальше, вы должны исправить свой синтаксис. >
и <
- это операторы перенаправления оболочки, а не оператор сравнения внутри старого теста [...]
. В некоторых оболочках вы можете экранировать их \ <
и \>
, чтобы заархивировать сравнение строк , или используя новый тест [[...]]
.
Похоже, в данном случае вам нужно числовое сравнение, поэтому следует придерживаться стандартного оператора -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