Avoir des problèmes avec redis-cli
. Je veux vérifier si la connexion à redis
est refusée (serveur arrêté), via BASH.
Test simple
#!/bin/bash
test=$(redis-cli exit) #exit out of the "not connected console"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Je m'attendrais à ce que Could not connect to Redis at 127.0.0.1:6379: Connection refused
soit stocké dans $ test, mais ce texte est plutôt affiché sur la console.
Je ne sais pas ce qui se passe. Quelqu'un a des idées?
(Ubuntu 14.04.1)
En effet, le message d'erreur est envoyé au flux STDERR (descripteur de fichier 2) et non à STDOUT (descripteur de fichier 1) que vous capturez avec la substitution de commande $()
.
Concentrez-vous simplement sur la chaîne, soit sur STDOUT, soit sur STDERR:
test="$(redis-cli exit 2>&1)"
dans ce cas, le test [ -z "$test" ]
donnera des faux positifs car le message d'erreur sera stocké dans la variable. Au lieu de cela, vous pouvez faire:
#!/bin/bash
test="$(redis-cli exit 2>/dev/null)"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Aussi, je pense que cela devrait obtenir ce que vous voulez étant donné le statut de sortie est trivial:
if redis-cli exit &>/dev/null; then
echo 'Succeeded!!'
else
echo 'Failed!!'
fi