O comando grep
recebe dois argumentos: padrão e arquivo . O arquivo pode ser omitido se a entrada estiver conectada a stdin com o canal |
ou o redirecionamento <
. Em seus exemplos, esse não é o caso, portanto, o primeiro grep
não sabe onde procurar por padrão. Você precisaria escrever:
grep -x $idle Event.log | grep -x $dead | grep -x $busy
Observe que o segundo e o terceiro grep
s não precisam de argumento de arquivo ao ler o pipe.
No entanto, no seu caso, acho que você prefere procurar três strings alternativas. Assim, você pode usar o operador alternativo |
com grep -E
ou \|
sem -E
, por exemplo:
if grep -x "$idle\|$dead\|$busy" ./Event.log >/dev/null
then
echo " Events are running Successfully" >> ./Event.log
else
echo "One or more Events are down. Check the log and restart the Events." >> ./Event.log
fi