Pessoal,
bom dia! Tempo enorme que não venho aqui, tanto que a última vez que utilizei o fórum ainda era o desgin antigo.
Bom, meu caso é o seguinte:
Eu tenho um script que precisa esperar o nosso cluster de Elasticsearch ficar green para continuar fazer uma tarefa que deixa o cluster red.
O meu loop está a seguir:
health=$(curl -s ${elasticsearch_url_172}/_cluster/health | jq .status)
while [ "${health}" != "green" ]; do
health=$(curl -s ${elasticsearch_url_172}/_cluster/health | jq .status)
echo "${health}"
if [ "${health}" != "green" ]; then
echo "[$(date +"%F %T")][$(pretty ${count})] Cluster em ${health}. Esperando ficar green."
echo "[$(date +"%F %T")][$(pretty ${count})] Retentando em 60 segundos..."
fi
sleep 60
done
O negócio que ocorre é que a variável "health" fica green, mas ele continua dentro deste loop.
Por acaso a instrução que altera a variável deve ser a última coisa no loop?
Estaria falando disto:
health=$(curl -s ${elasticsearch_url_172}/_cluster/health | jq .status)
while [ "${health}" != "green" ]; do
health=$(curl -s ${elasticsearch_url_172}/_cluster/health | jq .status)
echo "${health}"
if [ "${health}" != "green" ]; then
echo "[$(date +"%F %T")][$(pretty ${count})] Cluster em ${health}. Esperando ficar green."
echo "[$(date +"%F %T")][$(pretty ${count})] Retentando em 60 segundos..."
fi
sleep 60
health=$(curl -s ${elasticsearch_url_172}/_cluster/health | jq .status)
done