有问题redis-cli
。我想通过 BASH 检查是否被拒绝连接redis
(服务器关闭)。
简单测试
#!/bin/bash
test=$(redis-cli exit) #exit out of the "not connected console"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
我希望Could not connect to Redis at 127.0.0.1:6379: Connection refused
将其存储在 $test 中,但是该文本却输出到控制台。
我不确定发生了什么。有人知道吗?
(Ubuntu 14.04.1)
答案1
这是因为错误消息被发送到 STDERR 流(文件描述符 2),而不是使用命令替换捕获的 STDOUT(文件描述符 1)$()
。
只需关注获取字符串,无论是在 STDOUT 还是 STDERR 上:
test="$(redis-cli exit 2>&1)"
在这种情况下,[ -z "$test" ]
测试将导致误报,因为错误消息将存储在变量中。您可以这样做:
#!/bin/bash
test="$(redis-cli exit 2>/dev/null)"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
此外我认为,鉴于退出状态很简单,这应该可以得到你想要的:
if redis-cli exit &>/dev/null; then
echo 'Succeeded!!'
else
echo 'Failed!!'
fi