Zsh의 연관 배열에 공백이 있는 키 설정

Zsh의 연관 배열에 공백이 있는 키 설정

Bash(4 이상)에서 연관 배열이 있는 경우 dict해당 값을 다음과 같이 설정할 수 있으며 dict[apple count]=1을 사용할 수 있습니다 ${dict[apple count]}. Zsh는 키 이름에 공백을 허용합니까? dict[apple count]=1Zsh에서는 작동하지 않으므로 Zsh의 구문이 다른 것 같습니다. 내가 원하는 것을 수행하지 않습니다. 키로 dict["apple count"]=1사용하는 대신 따옴표를 키의 일부로 사용합니다.apple count"apple count"

답변1

Zsh는 임의의 문자열을 키로 허용합니다. 문제는 파서에 있습니다.

키를 설정하려면 변수를 사용할 수 있습니다.

typeset -A dict
key='apple count'; dict[$key]=1
key=']'; dict[$key]=2
key=''; dict[$key]=3
printf %s\\n "${(k@)dict}"

열쇠 취소가 더 어렵습니다..

답변2

(추악한) 해결 방법은 "일반 배열에 요소 추가" 구문을 사용하는 것입니다.

dict+=('apple count' 1)

Zsh는 연관 배열의 속성을 유지하므로(하나로 선언하는 한) dict['apple count']값이 존재하는 경우 업데이트합니다. Zsh 5.5부터 덜 추악한 방법은 다음과 같습니다.

dict+=(['apple count']=1 ['orange count']=3)

관련 정보