आप सरणी कुंजियों की सूची का उपयोग करके ऐसा कर सकते हैं । से 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[@]}"
। अधिक या कम के*
बजाय का उपयोग@
यह एक सरणी के बजाय एक स्ट्रिंग के रूप में व्यवहार करता है।