Описание тега tirana
Просто добавить несколько слов на другие ответы. Функция обратного вызова действует на функцию(ы) внешние функции с обратным вызовом. Для этого можно либо все определение функции, чтобы вам перезвонили должен быть передан функции обратного вызова, или его код должен быть доступен для функции обратного вызова.
Бывший (передача кода в другую функцию) можно, хотя я буду показывать пример для это предполагает сложности. Последний (передает функцию по имени) - это обычная практика, как переменные и функции, объявленные вне функции возможности доступны в этой функции как определение предшествует вызов функции, которая работает на них (которые, в свою очередь, как были объявлены прежде, чем оно там называется).
Также отметим, что подобная вещь происходит, когда функции экспортируются. Оболочку, которая импортирует функция может иметь базы готовы и только и ждут, для определения функций, чтобы положить их в действие. Функция экспорта присутствует в bash и вызвало ранее серьезных проблем, кстати (это называется контузия):
- Что же ОКР х='() { :;}; команда' Баш делать и почему это небезопасно?
- Когда была контузия (уязвимость CVE-2014-6271/7169) баг, и что такое патч, который полностью устраняет это?
Я завершу этот ответ с еще один способ передачи функции другой функцией, которая явно не присутствует в bash. Это одна передав его по адресу, а не по имени. Это можно найти в Perl, например. Баш предлагает этот путь ни по функциям, ни переменных. Но если, как вы утверждаете, вы хотите иметь картину с Баша как раз пример, то вы должны знать, что функция код может находиться где-то в памяти, и этот код может быть доступна, что ячейки памяти, которая называется ее адресом.