Это невозможно с вашей текущей функцией, как только вы добавите фоновое изображение &
он получит копию стека процессов и уйдет. Изменения в вашем стеке не смогут распространиться на копию задания, если вы явно не создадите эту функциональность, и аналогичным образом невозможно внести изменения в стек функции в ваш текущий стек.
Вы можете настроить межпроцессное взаимодействие, чтобы изменить переменную, но это всегда сложно сделать правильно, и я не уверен, каков ваш вариант использования. Пример МПК в обе стороны:
mkfifo -m 600 /var/tmp/cfn-to-fn
mkfifo -m 600 /var/tmp/cfn-from-fn
export CFN = ''
_some_fn
{
read CFN < /var/tmp/cfn-to-fn
# do something with the new CFN here
echo 'processed data' >/var/tmp/cfn-from-fn
_some_fn &
}
_some_fn &
echo 'processme' > /var/tmp/cfn-to-fn
cat /var/tmp/cfn-from-fn
Существует множество альтернатив mkfifo, о которых обычно говорят в разделе «Межпроцессное взаимодействие». Если вы находите достоинство в простоте, не беспокойтесь об этом, а просто записывайте свои данные в файл на одном конце и читайте его на другом. D-Bus - большая шина IPC в большинстве систем Unix, наряду с TCP/ или UDP/ IP (с netcat
или nc
), но я не видел много сценариев оболочки, которые бы использовали их.
Ваша последняя альтернатива - оставить все как есть и заставить ваш скрипт работать, не запуская его в качестве фонового задания, чтобы вы могли настроить среду во время ее работы.