에 문제가 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에 저장 될 것으로 예상 되지만이 텍스트는 대신 콘솔에 출력됩니다.
무슨 일인지 잘 모르겠습니다. 누구든지 아이디어가 있습니까?
(우분투 14.04.1)
답변
명령 대체로 캡처하는 STDOUT (파일 설명자 1)이 아니라 오류 메시지가 STDERR 스트림 (파일 설명자 2)으로 전송되기 때문 $()
입니다.
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