Las matrices asociativas parecen ser locales por defecto cuando se declaran dentro de un cuerpo de función, donde deberían ser globales. El códigoLas matrices asociativas son locales de forma predeterminada
#!/bin/bash
f() {
declare -A map
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
siguiente produce la salida:
x: y:
mientras este
#!/bin/bash
declare -A map
f() {
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
produce la salida:
x: a y: b
¿Es posible declarar una matriz asociativa global dentro de una función? ¿O qué solución alternativa se puede utilizar?
'declaran -g' también trabajará en zsh :) – AdrieanKhisbe