คุณสามารถทำได้โดยใช้รายการของคีย์อาร์เรย์ จากbash
หน้าคน:
${!name[@]}
${!name[*]}
รายการของคีย์อาร์เรย์ หาก name เป็นตัวแปรอาร์เรย์ให้ขยายไปยังรายการของดัชนีอาร์เรย์ (คีย์) ที่กำหนดในชื่อ ถ้า name ไม่ใช่ array ให้ขยายเป็น0
ถ้า name ถูกตั้งค่าไว้และ null เป็นอย่างอื่น เมื่อ@
มีการใช้งานและการขยายตัวจะปรากฏขึ้นภายในเครื่องหมายคำพูดคู่แต่ละคีย์จะขยายเป็นคำที่แยกต่างหาก
สำหรับตัวอย่างของคุณ:
#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in "${!AR[@]}"; do
printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done
ผลลัพธ์นี้ใน:
${AR[0]}=foo
${AR[1]}=bar
${AR[2]}=baz
${AR[3]}=bat
โปรดทราบว่าวิธีนี้ใช้ได้กับดัชนีที่ไม่ต่อเนื่องด้วย:
#!/bin/bash
AR=([3]='foo' [5]='bar' [25]='baz' [7]='bat')
for i in "${!AR[@]}"; do
printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done
ผลลัพธ์นี้ใน:
${AR[3]}=foo
${AR[5]}=bar
${AR[7]}=bat
${AR[25]}=baz
"${array[*]}"
"${array[@]}"
ใช้*
แทน@
มากขึ้นหรือน้อยลงถือว่าเป็นสตริงแทนอาร์เรย์