Dar*_*ron 15 command-line bash output
有问题redis-cli。我想redis通过 BASH检查连接是否被拒绝(服务器关闭)。
简单测试
#!/bin/bash
test=$(redis-cli exit) #exit out of the "not connected console"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Run Code Online (Sandbox Code Playgroud)
我希望Could not connect to Redis at 127.0.0.1:6379: Connection refused存储在 $test 中,但此文本会输出到控制台。
我不确定发生了什么。谁有想法?
(Ubuntu 14.04.1)
hee*_*ayl 21
那是因为错误消息被发送到 STDERR 流(文件描述符 2),而不是您使用命令替换捕获的 STDOUT(文件描述符 1)$()。
只专注于在 STDOUT 或 STDERR 上获取字符串:
test="$(redis-cli exit 2>&1)"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,[ -z "$test" ]测试将导致误报,因为错误消息将存储在变量中。相反,您可以这样做:
#!/bin/bash
test="$(redis-cli exit 2>/dev/null)"
if [[ -z $test ]] ; then
echo "I'm empty :("
fi
Run Code Online (Sandbox Code Playgroud)
另外我认为,鉴于退出状态微不足道,这应该会得到您想要的:
if redis-cli exit &>/dev/null; then
echo 'Succeeded!!'
else
echo 'Failed!!'
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9692 次 |
| 最近记录: |