test, если return true, если grep на выходе имеет строку в одной строке

Я просто хочу вернуть true или false, если служба запущена. Вот где я нахожусь, не в первую очередь, попробую, но сейчас при написании:

service iptables status | grep -qi "not running" 

Состояние sdtout для service iptables status при его остановке – iptables: Firewall is not running Когда я запускаю то, что я придумал, ничего не происходит в новой строке, что, я думаю, не является неожиданным, так как значение 0 истинно, а не 0 – false. Итак, мне нужно проверить, чтобы он работал, но я не уверен, что делать. Вот попытка:

 service iptables status | grep -qi "not running" || echo "stopped" 

поэтому, когда служба остановлена, я ожидал увидеть stopped но я не получил ничего, кроме новой строки.

2 Solutions collect form web for “test, если return true, если grep на выходе имеет строку в одной строке”

 service iptables status | grep -qi "not running" && echo "stopped" 

Вам просто нужно заменить || с && . Одна запутанная вещь о сценариях оболочки заключается в том, что 0 истинно, а любое другое число ложно, напротив большинства других языков. Это происходит потому, что программы обычно возвращают 0 для успеха.

Мне также нужно добавить статус 2>&1 после статуса в качестве service на моих выводах distro в stderr, но не похоже, что это проблема для вас.

Если grep не видит соответствия, он вернет ненулевой код. Возврат 0 означает, что совпадение найдено. Вы, вероятно, хотите:

 service iptables status | grep -qi 'not running' && echo 'Stopped' 
  • Weird zsh grep -P поведение
  • Показать только часть строки, найденной grep (но не той частью, которая соответствует шаблону)
  • Как добавить текст в выходной файл?
  • Как выводить несколько строк с использованием одного условия?
  • Как найти все файлы, содержащие определенную строку, рекурсивно на BusyBox 1.4.2?
  • В чем разница между \ b и \ <в команде grep
  • Как grep stderr?
  • Как запустить grep и показать x количество строк до и после матча
  • Grep для нескольких строк, покажите количество строк после одной из строк (но не другой)
  • Поиск последнего элемента в строке с использованием grep
  • Как получить количество заданной (диапазона) длины из строки с grep?
  • Linux и Unix - лучшая ОС в мире.