zsh 연관 배열에서 키 (또는 k / v 쌍)를 반복합니까?


23

zsh에서는 연관 배열을 반복하고 싶습니다. 키와 값이 모두 필요합니다. 그러나 연관 배열을 정상적으로 반복하면 ( for x in $assoc_array) 값만 얻습니다.

내가 본 모든 예제 는 key가 주어지면 연관 배열에서 값을 얻을 수 있음을 보여줍니다 . 내 문제는 키 세트를 시작하는 것입니다.

zsh는 연관 배열에서 키 반복을 지원합니까?


만약 당신이 작은 목록을 가지고 있다면 이것은 옵션 일 수 있습니다 :for i in a,b c_s,d ; do KEY=${i%,*}; VAL=${i#*,}; echo $KEY" XX "$VAL; done
math

답변:



30

내 질문을 한 후에 검색을 계속 하고 Unix StackExchange 에서이 답변 을 찾았 습니다.

typeset -A assoc_array
assoc_array=(k1 v1 k2 v2 k3 v3)

for k in "${(@k)assoc_array}"; do
  echo "$k -> $assoc_array[$k]"
done

출력은 다음과 같습니다

k1 -> v1
k2 -> v2
k3 -> v3

1
유용한 방법으로 이것을 테스트하려는 사람은 builtin으로 시도하십시오 $options. (참조 man zshoptions)
mVChr

키가 foo, bar 등과 같이 arr [foo] = baz와 같이 증가하지 않으면 어떻게됩니까?
Timo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.