Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

Vitallo

linux shell scripting

Рекомендуемые сообщения

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

Задачка была такая - на линуксовом сервере периодически надо проверять, есть ли маршрут до адреса 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 сказал:

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
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 

 

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


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