Баш 4.3.30
Предположим, у вас есть следующий код:
#!/bin/bash
declare -A map
f() {
map[x]=a
map[y]=b
}
g() {
for k in "${!map[@]}"
do
echo "$k --> ${map[$k]}"
done
}
f
g
Это выводы
x --> a
y --> b
Если я изменю вышеупомянутую программу на f | g
это ничего не выводит.
Я предполагал, что объявление ассоциативного массива в глобальном масштабе позволит мне получить доступ к его значениям в любое время и где угодно. Я читал о странных проблемах с конвейером и областью действия, но я не смог найти решение.