Este es mi script (zsh 5.8):
# Consider parameter expansion of an unset variable to be an error
set -u
# Define and populate associative array
typeset -A arr
arr=(x xxx y yyy)
echo $arr[x] # Outputs xxx
# Test whether key x is present
((${arr[(Ie)x]})) && echo true
La última línea me da el error zsh: x: parámetro no establecido y de este mensaje concluyo que zsh trata el x
no literalmente, sino como una variable que zsh quiere expandir. ¿Por qué tengo una expansión de variables aquí, y cómo puedo escribir la prueba (sin violar set -u
) para comprobar que la clave x está presente en la matriz?
Sé que, por supuesto, puedo escribir un bucle explícito sobre las claves (es decir for k in ${(k)arr}
pero sospecho que debe haber una manera más fácil de lograrlo.