Você pode usar if
. Além disso, para solicitar um comando, mas para excluir o próprio grep, você pode usar o seguinte truque:
if ps x | grep '[s]omething' ; then
echo Running.
else
echo Not running.
fi
Por exemplo, eu quero executar:
ps x | grep something | grep -v grep | somecommand
Eu quero executar somecommand
apenas se houver algo em execução. Como fazer isso?
Você pode usar if
. Além disso, para solicitar um comando, mas para excluir o próprio grep, você pode usar o seguinte truque:
if ps x | grep '[s]omething' ; then
echo Running.
else
echo Not running.
fi
Isso é simples:
pgrep something && somecommand
pgrep
é como ps | grep something | grep -v grep
, terser mas com menos opções para controlar a saída. No entanto, você não precisa se preocupar em filtrar por acaso algo realmente necessário (por exemplo, pgrep agreppina
funcionará, mas ps x | grep agreppina | grep -v grep
não funcionará).
command1 && command2
é um pouco como qualquer conjunção em uma linguagem de programação, o comando2 será executado somente se o primeiro comando for bem-sucedido (na verdade, se ele retornar um status zero).
Aqui está a solução
ps x | grep something | [[-n $(grep -v grep) ]] && somecommand