Обнаружить версию debian в файле пакета «rules»

Для команд оболочки статус выхода 0 означает истина/успешно, а все остальное означает ложь/неудача (при этом точное значение используется для различения различных типов ошибок). Лучше всего в первую очередь избегать использования точных значений состояния выхода и вместо этого использовать команды false или true:

__isred() {
  if [[ $(ps cax | grep redshift | wc -l) > 0 ]]
  then
    true
  else
    false
  fi
}

В этот момент вы начинаете понимать, что это немного глупо, как вы можете просто сделать:

__isred() [[ $(ps cax | grep redshift | wc -l) > 0 ]]

Обратите внимание, что [[ > ]] используется для лексического сравнения. Было бы разумнее использовать здесь численное сравнение:

__isred() (( $(ps cax | grep redshift | wc -l) > 0 ))

Но на самом деле нет необходимости подсчитывать количество вхождений, если вы просто хотите проверить, было ли хотя бы одно:

__isred() { ps cax | grep -q redshift; }

Должно быть достаточно. grep вернет успех, если регулярное выражение совпадает.

Теперь, когда вы используете нестандартный синтаксис ps, вы можете вместо этого использовать немного более переносимую команду pgrep, чтобы сделать это ps. ]+grep проще и надежнее:

__isred() { pgrep redshift > /dev/null; }
1
21.09.2015, 14:51
0 ответов

Теги

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