тест, если возвращают true, если grep на выводе имеет строку в одной строке

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

5
11.01.2014, 23:17
2 ответа
service iptables status | grep -qi "not running" && echo "stopped"

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

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

4
27.01.2020, 20:39
  • 1
    По моему скромному мнению, лучше думать о нем как о статусе выхода и не булевской переменной true / false. Таким образом if exit status == EXIT_SUCCESS then …. Grep также только использует 1 для несоответствия. Что-либо> 1 является кодом ошибки. –  Runium 11.01.2014, 12:07
  • 2
    Несомненно, но рано или поздно необходимо использовать true или false builtins для чего-то. Хотя succeed и fail могут быть более интуитивные имена их :) –  Graeme 11.01.2014, 13:49
  • 3
    Нет. true и false булевы значения. Моя точка, возможно, плохо переданная, то, что статус выхода не является булевым значением. Это оценивает к true и false, но значение падает между 0 и 255. Мы также имеем ((1)) и ((0)). –  Runium 12.01.2014, 03:55

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

service iptables status | grep -qi 'not running' && echo 'Stopped'
1
27.01.2020, 20:39

Теги

Похожие вопросы