Ассоциативные массивы по умолчанию являются локальными.

Ассоциативные массивы кажутся локальными по умолчанию, когда объявляются внутри тела функции, где они должны быть глобальными. Следующий код

#!/bin/bash

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

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

производит вывод:

x:  y:

, а этот

#!/bin/bash

declare -A map

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

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

выдает вывод:

x: a y: b

Возможно ли объявить глобальный ассоциативный массив внутри функции? Или какой обходной путь можно использовать?

29
задан davide 29 May 2012 в 20:36
поделиться