Você tem o seu formato errado. Tente isso:
while $JBOSS_ROOT status | grep -Enq "DOWN"
do
...
done
O [ ]
não é necessário (e não funciona) aqui. Isso é apenas para testes.
A intenção do código a seguir é verificar o status do JBoss, o loop while itera até que o status do JBoss chegue ao estado 'DOWN'. ' Eu tenho o seguinte script, que eu defini para esta variável de ambiente para que eu possa fazer uso dele, contra o caminho real para o script:
$ JBOSS_ROOT=/opt/app/jboss/jboss.sh
script
time=1
while [ $JBOSS_ROOT status | egrep -nq "DOWN" ]
do
echo "JBoss stooping, please wait ......."
sleep 1m
if [ $time -gt 6 ]
then
echo "Something went wrong.. it's been running more than 5 \
minutes, please check JBoos server log and deployments"
exit
fi
time=$(expr "$time" + 1)
done
echo "JBoss stopped"
'
$JBOSS_ROOT status
retorna "JBoss DOWN" se o JBoss estiver inativo (parar a posição). $JBOSS_ROOT status
retorna "O JBoss (pid: 32627) está EXECUTANDO" se o JBoss estiver em execução (posição inicial). Erro de lançamento no loop while. dizendo que ./stop.sh: line 5: [: missing
] ''.
Você tem o seu formato errado. Tente isso:
while $JBOSS_ROOT status | grep -Enq "DOWN"
do
...
done
O [ ]
não é necessário (e não funciona) aqui. Isso é apenas para testes.
Tags shell-script