TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #245 1.19K
declare -n: когда переменные становятся ссылками

В Bash 4.3+ появилась фича - nameref, или "ссылочные переменные". Она позволяет работать с переменной по её имени, как с указателем. Удобно для динамического доступа, написания функций и шаблонов.

❓ Что такое declare -n?


declare -n ссылка=имя_переменной


Теперь ссылка становится псевдонимом для имя_переменной.

▪️ Простой пример


name="Linux"
declare -n ref=name

echo "$ref" # → Linux
ref="Bash"
echo "$name" # → Bash


Переменная ref на самом деле редактирует name. Прямая манипуляция через ссылку.

▪️ Реальный кейс: функция, меняющая любую переменную


update_var() {
declare -n target=$1
target="Новое значение"
}

val="Старое"
update_var val
echo "$val" # → Новое значение


Без declare -n пришлось бы возвращать значение через stdout или временный файл.

▪️ Пример с массивами


arr1=(a b c)
arr2=(1 2 3)

print_array() {
declare -n ref=$1
for item in "${ref[@]}"; do echo "$item"; done
}

print_array arr1
print_array arr2


Теперь можно передавать имя массива как аргумент, а не содержимое.

🌟 Важно

- Работает только в Bash 4.3+
- declare -n не копирует значение, а создаёт указатель
- Можно делать цепочки: declare -n a=b, declare -n b=c, но лучше не злоупотреблять


BashTex 📱 #bash #utils
  • 👍 6
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
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 →