当我做
redis -h host -a password -p port HVALS myhash
redis 上的命令,它将返回该哈希的所有值,每行一个。在我的例子中,值是 JSON 格式的字符串。
我想将返回值存储在 shell 变量上,然后在循环中使用。该字符串默认以空格分隔。
我可以处理所有问题以避免使用此变量与循环结构出现任何问题,但我想知道redis是否有某种方法可以使用redis命令返回字符串结构数组。
要了解我正在寻找的内容,请考虑与此命令类似或相同的结果:
redis -h host -a password -p port HVALS myhash | jq -s
在这种情况下,jq 会很好地工作,因为它会识别 JSON 对象并创建一个数组的数组。
我想知道是否可以仅使用 redis 获取值的任何数组结构,并且最终结果是否不是有效的 JSON 也没关系(忘记我的字符串是 JSON 字符串这一事实)。我只想使用 redis 来做到这一点。我可以在 shell 脚本方面做,但这不是问题。
答案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