Cách tốt nhất là vượt qua như là đối số vị trí. Không có gì khác. Bạn có thể vượt qua dưới dạng chuỗi, nhưng cách này có thể gây ra một số rắc rối. Thí dụ:
array=(one two three four five)
function show_passed_array(){
echo $@
}
hoặc là
function show_passed_array(){
while $# -gt 0;do
echo $1;shift
done
}
show_passed_array ${array[@]}
đầu ra:
one two three four five
Bạn có nghĩa là nếu giá trị mảng có ký hiệu không gian, trước tiên bạn phải trích dẫn các phần tử trước khi vượt qua để truy cập giá trị theo chỉ mục trong hàm sử dụng các tham số vị trí $ 1 $ 2 $ 3 .... Trong đó chỉ mục 0 -> 1, 1 -> 2, ... Để lặp lại quyền truy cập, tốt nhất là luôn sử dụng $ 1 và sau Shift. Không có gì bổ sung là cần thiết. Bạn có thể truyền các đối số mà không có bất kỳ mảng nào như thế này:
show_passed_array one two three four five
bash media tự động xây dựng một mảng từ các đối số được truyền qua chúng để hoạt động và sau đó bạn có các đối số vị trí. Hơn nữa, khi bạn viết $ {mảng [2]}, bạn thực sự viết đối số hệ quả một hai ba bốn và chuyển chúng cho hàm. Vì vậy, những cuộc gọi là tương đương.