Assoziative Arrays sind standardmäßig lokal

Assoziative Arrays scheinen standardmäßig lokal zu sein, wenn sie in einem Funktionskörper deklariert werden, in dem sie global sein sollten. Der folgende Code

#!/bin/bash

f() {
    declare -A map
    map[x]=a
    map[y]=b
}

f
echo x: ${map[x]} y: ${map[y]}

erzeugt die Ausgabe:

x:  y:

während dieser

#!/bin/bash

declare -A map

f() {
    map[x]=a
    map[y]=b
}

f
echo x: ${map[x]} y: ${map[y]}

erzeugt die Ausgabe:

x: a y: b

Ist es möglich, ein globales assoziatives Array innerhalb einer Funktion zu deklarieren? Oder welche Abhilfemaßnahme kann verwendet werden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage