Как насчет переменной оболочки FUNCNAME?man bash
:
FUNCNAME
An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function.
for
не вводит свою собственную область видимости переменных, поэтому i
— это то, что находится на входе в цикл for
. Это может быть глобальным или локальным для любой функции, объявленной как локальная , или даже глобальным, но в подчиненной -оболочке .
При выходе из цикла for
переменная будет иметь последнее значение, которое она имела в цикле, если только она не попала в оболочку sub -. Насколько сильно это повлияет, зависит от области действия переменной, поэтому рекомендуется объявлять переменные цикла как локальные внутренние функции (, если только не требуется побочный -эффект ).