Как известно, в программировании bash способ передачи аргументов $1
, ..., $N
. Однако мне было непросто передать массив в качестве аргумента функции, которая получает более одного аргумента. Вот один пример:Как передать массив в качестве аргумента функции в Bash
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
Ни результат, как Я пожелал. Итак, есть ли у кого-нибудь представление о том, как правильно передать массив между функциями?
Возможный дубликат [Передача массивов в качестве параметров в bash] (http://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-in-bash) – chepner
@chepner Запомните. Я проверю его позже для некоторых идей. –
http://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-in-bash –