TGViewer
DevOps Portal | Linux DevOps Portal | Linux @loose_code · 13.1K subscribers
Post #813 4.53K
Как узнать имя функции из самой функции

#!/bin/bash

deploy() {
# здесь хотим получить "deploy"
}

Для получения имени функции из самой функции, можно воспользоваться переменной ${FUNCNAME[*]}.

Элемент с индексом 0 это имя любой выполняемой функции в данный момент.Элемент с самым большим индексом будет называться main.

deploy() {
echo ${FUNCNAME[0]}
}

Выведет название функции: deploy

Переменная FUNCNAME существует только во время выполнения скрипта. Если самостоятельно задать переменную FUNCNAME, это ничего не даст и все равно выведется эталонное имя функции.

При обращении к массиву без индекса, будет возвращен первый элемент массива текущий функции. Но так же будет содержать все остальные функции в стеке вызова.

Например:

exp1() {
echo ${FUNCNAME}
}

exp2() {
echo ${FUNCNAME[*]}
}

Первая функция выведет: exp1, а вторая выведет весь массив функции: exp2 main.

Не обязательно указывать индекс, все будет корректно работать и так. Это больше как правила хорошего тона. Как точка с запятой в конце строки, которая не влияет на функционал и никак не интерпретируется.

В zsh это называется funcstack, это тот же массив всех функций скрипта.

deploy() {
echo $funcstack[1]
}


Еще переменная FUNCNAME используется с BASH_LINENO и BASH_SOURCE, об этом можно почитать в официальной документации.


BASH_SOURCE - переменная, содержит путь к исходному файлу оболочки, полезна при отладке и анализе ошибок.

BASH_LINENO - переменная, содержит номер строки на которой произошла ошибка в текущем скрипте.

👉 DevOps Portal
  • 👍 11
  • ❤ 3
More from @loose_code
  1. Oct 6, 2026Как работает Kubernetes Cluster Autoscaler? Базовый флоу выглядит так Pending Pod → Cluste…
  2. Oct 6, 2026Что будет, если убрать репликацию с диска?☁️ В K2 Cloud проверили и запустили сетевые нере…
  3. Oct 1, 2026Обработка миллионов файлов – это та точка, где большинство распределённых систем хранения…
  4. Oct 1, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Oct 1, 2026Docker 101: Как достучаться до контейнера без проброса порта Знали, что IP-адрес контейнер…
  6. Sep 30, 2026В этой статье разбирается, как спроектировать production-ready MCP-сервер для платформенны…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →