Para comandos shell, um status de saída 0 significa verdadeiro / sucesso e qualquer outra coisa significa falso / falha (com o valor exato sendo usado para discriminar entre diferentes tipos de falhas). O melhor aqui seria evitar usar valores de status de saída exatos e usar os comandos false
ou true
:
__isred() {
if [[ $(ps cax | grep redshift | wc -l) > 0 ]]
then
true
else
false
fi
}
Nesse ponto, você está começando a perceber que é um pouco bobo, como você pode fazer:
__isred() [[ $(ps cax | grep redshift | wc -l) > 0 ]]
Observe que [[ > ]]
é para comparação lexical. Seria mais sensato usar a comparação numérica aqui:
__isred() (( $(ps cax | grep redshift | wc -l) > 0 ))
Mas, na verdade, não há necessidade de contar o número de ocorrências se você quiser apenas verificar se houve pelo menos um:
__isred() { ps cax | grep -q redshift; }
Deve ser o suficiente. grep
retornará sucesso se a regex for correspondida.
Agora, enquanto estiver usando a sintaxe ps
não padrão, convém usar o comando pgrep
um pouco mais portátil para fazer isso ps
+ grep
com mais facilidade e confiabilidade:
__isred() { pgrep redshift > /dev/null; }