
bash-функции продвинутые: local, return и nameref
В bash-функциях легко наступить на грабли. Переменная без local утекает в глобальную область и портит состояние вызывающего кода. return возвращает только код завершения — 0–255, не строку и не число. Три инструмента снимают большую часть боли. count_lines() { local file="$1" n n=$(wc -l < "$file") echo "$n" # значение — через stdout, не return } check_disk() { [ "$(df -h / | awk 'NR==2{print $5}' | tr -d '%')" -lt 90 ] } fill_array() { local -n ref=$1 ref=(one two three) } my_arr=() fill_array my_arr Частая ошибка — вернуть число через return, когда оно больше 255 (обрежется по модулю 256). Для реальных данных — echo+$(...) или nameref, return только под true/false. ...








