Так что я считаю, что вы запускаете run_query в качестве фонового процесса, в подоболочке с &.Таким образом, данные run_query и отображения не запускаются в одной и той же оболочке, поэтому они не могут получить доступ к переменным друг друга.
Просто что-то попробовать,
Вызовите display_data из run_query ()
function display_data() {
printf("%s\n" "$1")
}
export -f display_data
function run_query() {
sleep 5
DATA="$(curl "some_url" --someoptions)"
display_data "$DATA"
}
export -f run_query