आप सरणी कुंजियों की सूची का उपयोग करके ऐसा कर सकते हैं । से bashआदमी पेज:
${!name[@]}
${!name[*]}
सरणी कुंजियों की सूची । यदि नाम एक सरणी चर है, तो नाम में निर्दिष्ट सरणी सूचकांकों (कुंजियों) की सूची में विस्तारित होता है। यदि नाम कोई सरणी नहीं है, 0तो नाम सेट है और अन्यथा शून्य है। जब @उपयोग किया जाता है और विस्तार दोहरे उद्धरण चिह्नों के भीतर दिखाई देता है, तो प्रत्येक कुंजी एक अलग शब्द में फैल जाती है।
अपने उदाहरण के लिए:
#!/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[@]}"। अधिक या कम के*बजाय का उपयोग@यह एक सरणी के बजाय एक स्ट्रिंग के रूप में व्यवहार करता है।