¿Tiene problemas con redis-cli
. Quiero verificar si redis
se rechaza la conexión a (servidor apagado), a través de BASH.
Prueba simple
#!/bin/bash
test=$(redis-cli exit) #exit out of the "not connected console"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Esperaría Could not connect to Redis at 127.0.0.1:6379: Connection refused
estar almacenado en $ test, pero este texto se envía a la consola.
No estoy seguro de lo que está pasando. ¿Alguien tiene alguna idea?
(Ubuntu 14.04.1)
command-line
bash
output
Neurona Oscura
fuente
fuente
if [[ -z $test ]]
casi con seguridad se expandiráif [[ -z ]]
cuando$test
esté vacío, lo que probablemente romperá el condicional. Para protegerse contra esto, simplemente poner la variable entre comillas:if [[ -z "$test" ]] ; then
.Respuestas:
Esto se debe a que el mensaje de error se envía a la secuencia STDERR (descriptor de archivo 2), no a STDOUT (descriptor de archivo 1) que está capturando con la sustitución de comandos
$()
.Solo se enfoca en obtener la cadena, ya sea en STDOUT o STDERR:
en ese caso, la
[ -z "$test" ]
prueba dará como resultado falsos positivos ya que el mensaje de error se almacenará en la variable. En cambio, puedes hacer:También creo que esto debería obtener lo que deseas dado que el estado de salida es trivial:
fuente