0
J'ai le code suivant:bash: en utilisant le code de sortie de la fonction dans les expressions conditionnelles
...
docker_test() {
local masterip=$1
nc -zv $masterip 2377
}
...
until $(docker_test $masterip); do
echo "First Master not initialized yet..."
sleep 30
done
...
La question est - est-il approche correcte bash
d'utiliser des boucles ou if/else
de telle manière?
Un autre exemple pourrait être: s'il y a un problème avec le maître
if $(docker_test $masterip); then
echo "Passed"
fi
Quel est le problème ici, si votre intention est géré 'nc -zv..' jusqu'à ce qu'il soit réussi (retour un code' 0') cela ressemble bien – Inian
Merci @Inian. Oui cela fonctionne. Mais j'ai des doutes dans exactement 'jusqu'à $ (funcname); alors' la construction. Sera 'jusqu'à [" $ (docker_test $ masterip) "==" 0 "]' plus correct ici? Ou il peut être simplifié en toute sécurité au même code, comme le mien est? – setevoy
@setevoy Voulez-vous la sortie standard ou le code de sortie de la fonction? Si ce dernier, il suffit de laisser tomber la substitution de commande. 'jusqu'à docker_test" $ master_ip "; do'. Sinon, 'until [" $ (docker_test "$ master_ip") "= 0]' ('=', pas '==') est correct. – chepner