Перенаправить сообщение об ошибке на / dev / null в условии if [closed]

-2
02.08.2016, 12:18
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
1
28.01.2020, 05:17

Теги

Похожие вопросы