Tablice asocjacyjne wydają się domyślnie lokalne, gdy są zadeklarowane w treści funkcji, gdzie powinny być globalne. Poniższy kodTablice asocjacyjne są domyślnie lokalne.
#!/bin/bash
f() {
declare -A map
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
produkuje wyjście:
x: y:
podczas tego
#!/bin/bash
declare -A map
f() {
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
produkuje wyjście:
x: a y: b
Czy można zadeklarować globalną tablicę asocjacyjną w ramach funkcji? A jakie rozwiązania można zastosować?
'zadeklarować -g' będzie również działać na zsh :) – AdrieanKhisbe