Это не может быть сделано. Переменные среды разделены NUL; определения массива разделяют элементы с NUL. Таким образом, вы можете экспортировать переменную среды только в том случае, если она сериализована в строку, так что дочерний процесс может десериализовать ее в массив.
В отличие от этого, вы можете сделать экспорт BASH_ENV
с именем файла, содержащим содержимое, которое при получении будет определять ваш массив.
Таким образом:
read -a CALLBACKS_ARRAY <<< "${CALLBACKS}"
BASH_ENV=$(mktemp -t bash_env.XXXXXX)
declare -p CALLBACKS_ARRAY >"$BASH_ENV"
export BASH_ENV
Обратите внимание, что совместимый /bin/sh
читает ENV
вместо BASH_ENV
; тем не менее, поскольку массивы отсутствуют в базовом стандарте POSIX sh, здесь не нужно сильно беспокоиться об этом.