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)
これは、コマンド置換$()
でキャプチャしている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