私がするとき
redis -h host -a password -p port HVALS myhash
そのハッシュのすべての値を1行に1つずつ返すredisコマンド。私の場合、値はJSON形式の文字列です。
戻り値をシェル変数に保存してから、ループで使用したいと思います。文字列はデフォルトでスペースで区切られます。
ループ構造とともにこの変数を使用して問題を回避するためにすべてを処理できますが、redisコマンドを使用して文字列構造の配列を返すredisの方法があるかどうか疑問に思います。
私が探しているものを理解するには、次のコマンドと同様または同じ結果を検討してください。
redis -h host -a password -p port HVALS myhash | jq -s
この場合、jqはJSONオブジェクトを認識し、配列の配列を作成するため、うまく機能します。
Redisだけを使用して値の配列構造を取得できるかどうか疑問に思いましたが、最終結果が有効なJSONではないかどうかは問題ではありません(私の文字列がJSON文字列であることを忘れました)。私はこれを行うためにredisを使用したいと思います。これはシェルスクリプトの面で行うことができますが、問題ではありません。
答え1
コマンドがredis -h host -a password -p port HVALS myhash
各項目を区切って結果を返す場合は、<space>
配列を使用できます。
hash_array=($(redis -h host -a password -p port HVALS myhash))
その後、for
ループで繰り返す
for item in "${hash_array[@]}"
do
echo "$item"
done