Probleme mit redis-cli
. Ich möchte redis
über BASH prüfen, ob die Verbindung zu abgelehnt wurde (Server nicht erreichbar).
Einfacher Test
#!/bin/bash
test=$(redis-cli exit) #exit out of the "not connected console"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Ich würde erwarten Could not connect to Redis at 127.0.0.1:6379: Connection refused
, in $ test gespeichert zu werden, aber dieser Text wird stattdessen auf der Konsole ausgegeben.
Ich bin nicht sicher, was los ist. Hat jemand irgendwelche Ideen?
(Ubuntu 14.04.1)
command-line
bash
output
DarkNeuron
quelle
quelle
if [[ -z $test ]]
an Sicherheit grenzender Wahrscheinlichkeit erweitern wird ,if [[ -z ]]
wenn$test
leer wird, was die Bedingung wahrscheinlich zu brechen scheint. Zum Schutz gegen diese, setzen Sie einfach die Variable in Anführungszeichen:if [[ -z "$test" ]] ; then
.Antworten:
Dies liegt daran, dass die Fehlermeldung an den STDERR-Stream (Dateideskriptor 2) und nicht an STDOUT (Dateideskriptor 1) gesendet wird, den Sie mit der Befehlsersetzung erfassen
$()
.Konzentriere dich nur darauf, den String zu bekommen, entweder auf STDOUT oder STDERR:
In diesem Fall führt der
[ -z "$test" ]
Test zu falsch positiven Ergebnissen, da die Fehlermeldung in der Variablen gespeichert wird. Stattdessen können Sie Folgendes tun:Auch ich denke, dies sollte bekommen, was Sie wollen, da der Exit-Status trivial ist:
quelle