Область действия переменной, определенной вне функции, начинается там, где она определена, и заканчивается там, где заканчивается оболочка, или там, где она явно удаляется.
Область действия переменных, определенных внутри функции, начинается с того места, где она вызывается, и заканчивается там, где заканчивается оболочка или удаляется явно.
Очень простой пример иллюстрирует проблему:
#!/bin/bash
func_(){
var1='123'
}
func_
echo $var1
Вывод результатов
123
Следовательно, после вызова функции переменные, определенные внутри функции, все еще существуют после выхода из функции.
Эта проблема может легко привести к ошибкам в программе, поэтому будьте внимательны.