Bạn có thể làm điều này bằng cách sử dụng Danh sách các phím mảng . Từ bash
trang người đàn ông:
${!name[@]}
${!name[*]}
Danh sách các khóa mảng . Nếu tên là một biến mảng, mở rộng ra danh sách các chỉ số mảng (khóa) được gán trong tên. Nếu tên không phải là một mảng, mở rộng thành 0
nếu tên được đặt và null khác. Khi @
được sử dụng và mở rộng xuất hiện trong dấu ngoặc kép, mỗi khóa sẽ mở rộng thành một từ riêng biệt.
Ví dụ của bạn:
#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in "${!AR[@]}"; do
printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done
Kết quả này trong:
${AR[0]}=foo
${AR[1]}=bar
${AR[2]}=baz
${AR[3]}=bat
Lưu ý rằng điều này cũng hoạt động cho các chỉ mục không liên tiếp:
#!/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
Kết quả này trong:
${AR[3]}=foo
${AR[5]}=bar
${AR[7]}=bat
${AR[25]}=baz
"${array[*]}"
thay vì"${array[@]}"
. Sử dụng*
thay vì@
nhiều hơn hoặc ít hơn coi nó như một chuỗi thay vì một mảng.