Есть ли способ передать массив в функцию как один аргумент?Передача массива в функцию bash
Я попытался следующие, не работали:
arr=(a b c)
my_func $arr
, а также
arr(a b c)
my_func ${arr[*]}
Есть ли способ передать массив в функцию как один аргумент?Передача массива в функцию bash
Я попытался следующие, не работали:
arr=(a b c)
my_func $arr
, а также
arr(a b c)
my_func ${arr[*]}
Passing "${arr[@]}"
(@ ответ quickshiftin в) вид работ, но важно отметить, что он не пропускает массив , но массив элементов, как отдельные аргументы, доступного вызывающему функции как $1
, $2
...
Это имеет следующие последствия:
reassembledArray=("[email protected]")
Суть этого: нет никакого способа прохода массивов в качестве такого.
Тем не менее, если вы вызываете на функцию, а не сценарий, ваша функция будет иметь доступ ко всем переменным в текущей оболочке, так что вы можете просто непосредственно доступа переменная массива определяется в перед вызовом функции.
Пример:
my_func() {
echo "Elements of arr:"
for el in "${arr[@]}"; do echo "[$el]"; done
}
arr=(a b c)
my_func
Вызвать функцию как этот
my_func "${arr[@]}"