วิธีที่ดีที่สุดคือส่งผ่านอาร์กิวเมนต์ตำแหน่ง ไม่มีอะไรอีกแล้ว. คุณอาจผ่านเป็นสตริง แต่วิธีนี้อาจทำให้เกิดปัญหาบางอย่าง ตัวอย่าง:
array=(one two three four five)
function show_passed_array(){
echo $@
}
หรือ
function show_passed_array(){
while $# -gt 0;do
echo $1;shift
done
}
show_passed_array ${array[@]}
เอาท์พุท:
one two three four five
คุณหมายถึงว่าค่าอาร์เรย์มีสัญลักษณ์เว้นวรรคคุณต้องพูดองค์ประกอบก่อนถึงการเข้าถึงค่าตามดัชนีในฟังก์ชันใช้ $ 1 $ 2 $ 3 ... พารามิเตอร์ตำแหน่ง โดยที่ index 0 -> 1, 1 -> 2, ... หากต้องการย้ำการเข้าถึงคุณควรใช้ $ 1 เสมอและหลัง Shift ไม่ต้องการอะไรเพิ่มเติม คุณสามารถส่งผ่านข้อโต้แย้งโดยไม่มีอาเรย์เช่นนี้:
show_passed_array one two three four five
bash media จะสร้างอาเรย์โดยอัตโนมัติจากอากิวเมนต์ที่ส่งผ่านเพื่อให้ทำงานและจากนั้นคุณจะมีอากิวเมนต์ตำแหน่ง นอกจากนี้เมื่อคุณเขียน $ {array [2]} คุณเขียนอาร์กิวเมนต์ที่ตามมาจริง ๆ หนึ่งสองสามสี่และส่งผ่านไปยังฟังก์ชัน ดังนั้นการโทรเหล่านั้นจึงเทียบเท่ากัน