Vitallo

linux shell scripting

В теме 5 сообщений

Есть ли тут ещё любители такой старины ?

Задачка была такая - на линуксовом сервере периодически надо проверять, есть ли маршрут до адреса ADDR,

и если нет, до добавлять его.

Я решил так:

 

if [ ! "`ip ro | grep ADDR`" ] ; then ip ro add ADDR dev tun0 ; fi

Это древняя классика, много вложенных конструкций - обратные апострофы для запуска команды, двойные кавычки

для проверки пустая ли строка текста пришла от вывода той команды, восклицательный знак для инверсии результата,

скобки квадратные у if [ ] - не совсем понимаю зачем они.

 

Так вот, а предложите более изящный вариант на замену
 

if [ ! "`ip ro | grep ADDR`" ]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 07.11.2018 в 08:01, Vitallo сказал:

if [ ! "`ip ro | grep ADDR`" ]

в bash-е можно так:

if [ ! "$(ip ro | grep ADDR)" ]

или вообще так
 

ip ro | grep ADDR || ip ro add ADDR dev tun0 

 

п.с:

В 07.11.2018 в 08:01, Vitallo сказал:

Есть ли тут ещё любители такой старины ?

нашли блин "старину"

Изменено пользователем oldbay

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Vitallo сказал:

это даже длиннее

зато второй вариант  короче:

Вместо вашего монстра 

Цитата

if [ ! "`ip ro | grep ADDR`" ] ; then ip ro add ADDR dev tun0 ; fi

только это

Цитата

ip ro | grep ADDR || ip ro add ADDR dev tun0 

 

Изменено пользователем oldbay

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти