TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #265 1.3K
Bash-функции с возможностью изменять аргументы

Когда ты передаешь переменные в функции - по умолчанию это копии, а не ссылки. Но с declare -n (aka nameref) можно менять переменные по ссылке, включая элементы массивов и даже динамические имена переменных.

❓ Что такое nameref?

declare -n ref=имя - создает ссылку на переменную, позволяя функции менять её напрямую.

▪️ Пример: модификация значения по ссылке


modify() {
declare -n ref=$1
ref="Изменено внутри функции"
}

value="Оригинал"
modify value
echo "$value" # Изменено внутри функции


▪️ Пример: изменение массива внутри функции


update_array() {
declare -n arr=$1
arr+=("новый элемент")
}

my_array=("один" "два")
update_array my_array
printf "%s\n" "${my_array[@]}"


Вывод:


один
два
новый элемент


▪️ Комбинирование с итерацией и позиционными аргументами


double_values() {
declare -n numbers=$1
for i in "${!numbers[@]}"; do
numbers[$i]=$((numbers[$i] * 2))
done
}

arr=(10 20 30)
double_values arr
echo "${arr[@]}" # 20 40 60


❗️ Когда использовать nameref?

📍 Когда хочется возвращать несколько значений из функции
📍 Когда работаешь с динамическими именами переменных
📍 Когда пишешь библиотеки/модули на Bash


BashTex 📱 #bash #utils
  • 👍 7
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 →