Vitallo Жалоба Опубликовано 7 ноября, 2018 Есть ли тут ещё любители такой старины ? Задачка была такая - на линуксовом сервере периодически надо проверять, есть ли маршрут до адреса ADDR, и если нет, до добавлять его. Я решил так: if [ ! "`ip ro | grep ADDR`" ] ; then ip ro add ADDR dev tun0 ; fi Это древняя классика, много вложенных конструкций - обратные апострофы для запуска команды, двойные кавычки для проверки пустая ли строка текста пришла от вывода той команды, восклицательный знак для инверсии результата, скобки квадратные у if [ ] - не совсем понимаю зачем они. Так вот, а предложите более изящный вариант на замену if [ ! "`ip ro | grep ADDR`" ] Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oldbay Жалоба Опубликовано 8 ноября, 2018 В 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 сказал: Есть ли тут ещё любители такой старины ? нашли блин "старину" Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vitallo Жалоба Опубликовано 9 ноября, 2018 if [ ! "$(ip ro | grep ADDR)" ] это даже длиннее Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vitallo Жалоба Опубликовано 9 ноября, 2018 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oldbay Жалоба Опубликовано 9 ноября, 2018 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты