Как мы знаем, в bash-программировании способ передачи аргументов составляет $1 ,..., $N Однако я обнаружил, что нелегко передать массив в качестве аргумента функции, которая получает более одного аргумента. Вот один пример:
f(){
x=($1)
y=$2
for i in "${x[@]}"
do
echo $i
done
....
}
a=("jfaldsj jflajds" "LAST")
b=NOEFLDJF
f "${a[@]}" $b
f "${a[*]}" $b
Как описано, функция f получает два аргумента: первый присваивается x который является массивом, второй - y.
f можно назвать двумя способами. Первый способ использует "${a[@]}" в качестве первого аргумента, и результат:
jfaldsj
jflajds
Второй способ использует "${a[*]}" в качестве первого аргумента, и результат:
jfaldsj
jflajds
LAST
Ни один из результатов не соответствует желаемому. Итак, есть ли у кого-нибудь идеи о том, как правильно передавать массив между функциями?