내가 할 때
redis -h host -a password -p port HVALS myhash
해당 해시에 대한 모든 값을 한 줄에 하나씩 반환하는 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