Испытывание затруднений из-за 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
Я ожидал бы Could not connect to Redis at 127.0.0.1:6379: Connection refused
быть сохраненным в $test, но этом тексте производится к консоли вместо этого.
Я не уверен, что продолжается. У кого-либо есть какие-либо идеи?
(Ubuntu 14.04.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