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 Could not connect to Redis at 127.0.0.1:6379: Connection refused
à être stocké dans $ test, mais ce texte est plutôt affiché sur la console.
Je ne suis pas sûr de ce qui se passe. Quelqu'un a des idées?
(Ubuntu 14.04.1)
command-line
bash
output
DarkNeuron
la source
la source
if [[ -z $test ]]
presque certainement étendre àif [[ -z ]]
quand$test
est vide, ce qui semble susceptible de briser le conditionnel. Pour protéger contre cela, il suffit de mettre la variable entre guillemets:if [[ -z "$test" ]] ; then
.Réponses:
C'est parce que le message d'erreur est envoyé au flux STDERR (descripteur de fichier 2), pas à STDOUT (descripteur de fichier 1) que vous capturez avec la substitution de commande
$()
.Se concentrer uniquement sur l'obtention de la chaîne, soit sur STDOUT soit sur STDERR:
dans ce cas, le
[ -z "$test" ]
test entraînera des faux positifs car le message d'erreur sera stocké dans la variable. Au lieu de cela, vous pouvez faire:Je pense également que cela devrait obtenir ce que vous voulez étant donné que le statut de sortie est trivial:
la source