shell 函数参数为数组传递

时间:2021-05-04 21:29:40

You cannot pass an array, you can only pass its elements (i.e. the expanded array).

#! /bin/bash function f() { a=("$@") ((last_idx=${#a[@]} - 1)) b=${a[last_idx]} unset a[last_idx] for i in "${a[@]}" ; do echo "$i" done echo "b: $b" } x=("one two" "LAST") b='even more' f "${x[@]}" "$b" echo =============== f "${x[*]}" "$b"

The other possibility would be to pass the array by name:

#! /bin/bash function f() { name=$1[@] b=$2 a=("${!name}") for i in "${a[@]}" ; do echo "$i" done echo "b: $b" } x=("one two" "LAST") b='even more' f x "$b"



http://*.com/questions/16461656/bash-how-to-pass-array-as-an-argument-to-a-function