Přečtěte si podrobný manuál, sekci "chyby".
Proměnné pole nelze (zatím) exportovat.
I když nevím, že to mnozí považují za skutečnou chybu. Ostatní shelly, které podporují pole ve stylu ksh, také neumožňují jejich export.
Definice polí můžete předat poměrně snadno, prostřednictvím parametrů nebo proměnných nebo prostředí. Obvykle to však není příliš užitečné.
function f {
unset -v "$2"
typeset "$2"
eval "${!1}"
typeset -p "$2"
}
typeset -a a=(a b c)
myArr=$(typeset -p a) f myArr a
Nedorozumění je v domnění, že proměnné prostředí používají pouze shelly – nejsou. Do bloku prostředí nelze exportovat žádné atributy, včetně pouze pro čtení, celého čísla a polí. Proměnné prostředí může číst jakýkoli jazyk, C, C++, Perl, Java, Python, PHP a tak dále. Existují také v systému Windows.
Jak by tedy mohl jiný jazyk podporovat specifické atributy Bash? Všechny proměnné prostředí jsou převedeny na řetězce, kromě Bash, kde se hodnoty pole vůbec neexportují.
Korn shell exportuje pouze první prvek. ksh93 také dělá nějaké exec
zneužití k zachování proměnných atributů exportovaných do Korn shellu.
Mimochodem, je považováno za špatnou praxi používat pro názvy proměnných VELKÁ PÍSMENA, protože by mohly kolidovat s těmi, které používá shell. Také v Bash 3 má název STRING problémy při exportu (opraveno v Bash 4).