LINUX.ORG.RU

Как передать массив имен переменных и дополнительно аргументы?

 


0

2

Есть какой-то более элегантный способ работы с аргументами в функции?

z1() {
    local local_array=("${@}")
    for i in $(seq 1 ${local_array[0]}); do
        local "${local_array[${i}]}"="${local_array[(("${i}"+local_array[0]))]}";shift
    done
    echo "${x}" "${y}" "${z}"
}


x=1
y=2
z=3
VARIABLES=("x" "y")

z1 "${#VARIABLES[@]}" \
   "${VARIABLES[@]}" \
   "${x}" \
   "${y}" \
   "${z}"
★★★★

Последнее исправление: serg002 (всего исправлений: 3)
Ответ на: комментарий от serg002

У нас, джунов, так не принято. Моветон-с

А кроме того что это моветон можешь объяснить почему это плохо? Глобальные переменные в скрипте перепутаются? Ну дай такие меня чтоб точно не перепутали ь, неужели ты не видишь что городить в каждой функции парсер аргументов размером в три четверти от функции - это хуже? Очевидно же, что баш таким не задумывался

pihter ★★★★★
()