Như chúng ta biết, trong lập trình bash, cách vượt qua đối số là $1
, ..., $N
. Tuy nhiên, tôi thấy nó không dễ dàng để vượt qua một mảng như một đối số cho một hàm nhận nhiều hơn một đối số. Dưới đây là một ví dụ:Cách chuyển mảng làm đối số cho hàm trong 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
Như đã trình bày, chức năng f
nhận hai đối số: là người đầu tiên được gán cho x
mà là một mảng, thứ hai để y
.
f
có thể được gọi theo hai cách. Cách đầu tiên sử dụng "${a[@]}"
như là đối số đầu tiên, và kết quả là:
jfaldsj
jflajds
Cách thứ hai sử dụng "${a[*]}"
như là đối số đầu tiên, và kết quả là:
jfaldsj
jflajds
LAST
kết quả Không phải là như Tôi ước. Vì vậy, có ai có bất kỳ ý tưởng về làm thế nào để vượt qua mảng giữa các chức năng một cách chính xác?
có thể trùng lặp của [Truyền mảng dưới dạng tham số trong bash] (http://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-in-bash) – chepner
@chepner cảm ơn vì đã nhắc nhở. Tôi sẽ kiểm tra sau này để biết một số ý tưởng –
http://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-in-bash –