Задать вопрос
@zamsisadmin
Специалист технической поддержки большого склада.

Как понять значение этой строки?

Может кто-то помочь разобрать значение данной строки
if /bin/ping -c 2 8.8.8.8 > /dev/null 2> /dev/null


Правильно ли я понимаю что команда ping отправляет два пакета и сравнивает получение с ничем грубо говоря, но вот последнюю часть строки не совсем пойму, а именно
/dev/null 2> /dev/null
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
каждая команда после завершения возвращает код возврата.
для if важно не сравнение чего-либо с чем-либо, а именно код возврата команды, который 0 - успех, не ноль - ошибка.
поэтому if [ A == B ] - это не сравнение а выполнение команды[ ]
так и тутif ping - это не сравнение, а выполнение команды pingи получение ее кода возврата

> /dev/null 2> /dev/null
> - перенаправление вывода stdout в нул
2>перенаправление вывода stderr в нул
Это чтобы на экран команда ничего не выводила - ни основной вывод ни ошибки

p.s. посмотреть код возврата можно через переменную $?
ping -c 1 google.com
echo $?

ping -c 1 google.com1
echo $?
Ответ написан
@pfg21
ex-турист
">" "2>" это перенаправление потока вывода и потока ошибок исполнения ping в /dev/null, т.е его выводы нам не интересны. https://habr.com/ru/post/55136/

в условии if %программа% проверяется переменная ERRORLEVEL, не нулевое значение которой считается за ошибку.
соответственно данное условие будет правильным при выдаче програмкой ERRORLEVEL=0.

ping -c 2, сколь помню, выдает ERRORLEVEL=0 если оба пакета нормально прошли туда-обратно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Это не математические действия. Почитайте про потоки и их операторы в баше. |, >, >>, ; и т. д.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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