«Обратный вызов» происходит от того факта, что вы даете подпрограмме кусок кода для последующего выполнения (для случаев, когда выполняется какое-либо условие), и подпрограмма «вызывает обратно», выполняя этот код.
Сравнитеэто дает кому-то свой номер телефона, когда он ему нужен.Когда им это нужно, они перезванивают.В этот момент они, возможно, никогда не звонили вам раньше.
В сценарии оболочки trap
используется для установки обратного вызова, который будет оцениваться, когда сигнал «пойман» или «захвачен».Стандартная оболочка также позволяет перехватывать точку при выходе из оболочки (EXIT
), а оболочка bash
дополнительно поддерживает ошибки перехвата (ERR
), выход из функции (RETURN
) и каждую простую команду (DEBUG
).
Утилита trap
не позволяет вызывать функцию обратного вызова для общих асинхронных событий.
В вашем примере cleanup
можно назвать функцией обратного вызова.Он устанавливается с trap
и будет выполняться непосредственно перед выходом из текущей оболочки.Другими словами, утилита trap
устанавливает ловушку EXIT
, которая будет вызывать функцию обратного вызова cleanup
.
Код, установленный trap action event
, будет выполняться аналогично eval action
, когдаданное event
происходит.Поэтому action
может быть любым шелл-кодом, не обязательно просто вызовом функции.
Другим словом для вашей cleanup
функции будет «обработчик», подпрограмма, которая обрабатывает что-то, и, возможно, более конкретно »EXIT
обработчик ".Если бы он использовался для обработки перехваченного сигнала, он был бы «обработчиком сигнала для этого конкретного сигнала».Также обычно называют эту функцию «обработчиком ловушек» (обработчик устанавливается trap
) или просто «ловушкой», хотя это не «более точно».