¿Tiene problemas con redis-cli. Quiero verificar si redisse 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 refusedestar 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$testesté 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