Intereting Posts
Команда ss для проверки сокетов не найдена Синтаксис формата Hexdump – цвет Повторные значения для errno в man-странице Что может вызвать «кроссовер» между двумя веб-камерами USB2 при использовании движения? Проверьте, является ли каталог точкой монтирования Отключите клавиатуру ноутбука, чтобы использовать только USB-клавиатуру Выключение системы непосредственно из диспетчера отображения Xmonad – SLiM Что значит? * Означает в команде оболочки? Сделайте несколько изменений с помощью одного вызова sed Оператор Bash OR не оценивает несколько переменных od – octaldump – как предотвратить возвращение Как извлечь / удалить старые файлы из tarball, который был обновлен Удивительный менеджер окон перестает распознавать ярлыки Может ли пользователь AIX, который появляется в etc / group, но не etc / passwd, все еще регистрируется на сервере? Debian на brix. Драйверы LAN-карты

Поиск строки в выводе команды

Я застрял в простом скрипте. Я хочу запустить tracepath по нескольким адресам и найти, содержится ли какой-либо IP-адрес в выходе tracepath . На данный момент у меня есть следующее:

 if tracepath -n google.com | grep xxxx do echo bal bal else echo ova ova ova fi 

Но это не работает.

Попробуйте этот синтаксис, и я думаю, что вы не хотите выводить grep , поэтому мы используем переключатель -q (quiet):

 (traceroute -n google.com | grep -q xxxx) && echo "Yes" || echo "Nope" 

Или с выражением if :

 if (traceroute -n google.com | grep -q xxxx) then echo "Yes" else echo "Nope" fi 

У вас неправильный синтаксис, после if условие там должно быть, не do :

 tracepath -n google.com | grep xxxx if [ $? -eq 0 ] then echo "bal bal" else echo "ova ova ova" fi