की सूची के लिए "वेरिएबल" वेरिएबल नामों के माध्यम से Iterating मुझे सहयोगी सरणी की एक चर सूची मिली है जिसे मैं फिर से चालू करना चाहता हूं और उनके कुंजी/मूल्य जोड़े को पुनर्प्राप्त करना चाहता हूं।बैश स्क्रिप्टिंग - सहयोगी सरणी
मैं अपनी सभी चाबियों को सूचीबद्ध करके और मूल्यों को प्राप्त करके एक ही सहयोगी सरणी के माध्यम से पुनरावृत्ति करता हूं, यानी।
for key in "${!queue1[@]}" do
echo "key : $key"
echo "value : ${queue1[$key]}"
done
मुश्किल हिस्सा यह है कि एसोसिएटिव सरणी के नाम परिवर्तनीय चर हैं, उदा। दी गई गिनती = 5, एसोसिएटिव सरणी को क्यूई 1, क्यूई 2, क्यूई 3, क्यूई 4, क्यूई 5 नाम दिया जाएगा।
मैं गिनती के आधार पर उपरोक्त अनुक्रम को प्रतिस्थापित करने की कोशिश कर रहा हूं, लेकिन अब तक कोष्ठक और eval के प्रत्येक संयोजन को खराब प्रतिस्थापन त्रुटियों को और अधिक नहीं मिला है। उदाहरण के नीचे:
for count in {1,2,3,4,5} do
for key in "${!queue${count}[@]}" do
echo "key : $key"
echo "value : ${queue${count}[$key]}"
done
done
सहायता बहुत सराहना की जाएगी!
for count in {1..5} ; do
for key in $(eval echo '${!q'$count'[@]}') ; do
eval echo '${q'$count"[$key]}"
done
done
नोट यह टूट जाता है किसी भी कुंजी एक अंतरिक्ष निहित यदि:
( आदि
queue5[this]
नामित चर का एक अनुक्रम,queue5[that]
, के रूप में इलाज यही है, सरणीqueue5
जा सकता है) मौजूदा जवाब बैश 4.3 में namevar समर्थन के संदर्भ में काफी हद तक बाहर के तारीख कर रहे हैं (और बादमें)। –