বাশ এসোসিয়েটিভ অ্যারে ভেরিয়েবলের সমস্ত 'ইনডেক্স আইডি' (কী) তালিকাভুক্ত করার কোনও উপায় আছে কি?


26

আমার এই অ্যারে আছে:

declare -A astr

আমি এতে উপাদান যুক্ত করছি:

astr[elemA]=123
astr[elemB]=199

তবে পরে আমাকে সূচি আইডিগুলি (এলিএমএ এবং এলেমবি) কী এবং সেগুলি তালিকাভুক্ত করতে হবে।

echo "${astr[@]}" #this only get me the values...

উত্তর:


35

আপনি এই জাতীয়ভাবে পরামর্শমূলক অ্যারের জন্য "কীগুলির" তালিকা পেতে পারেন:

$ echo "${!astr[@]}"
elemB elemA

আপনি "কী" এর মাধ্যমে পুনরাবৃত্তি করতে পারেন:

for i in "${!astr[@]}"
do   
  echo "key  : $i"
  echo "value: ${astr[$i]}"
done

উদাহরণ

$ for i in "${!astr[@]}"; do echo "key  : $i"; echo "value: ${astr[$i]}"; done
key  : elemB
value: 199
key  : elemA
value: 123

তথ্যসূত্র


1
আমি সবেমাত্র পেয়েছি এটি সংখ্যাসূচকভাবে সূচিকৃত অ্যারেগুলির জন্যও কাজ করে: astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}থেক্স!
— অ্যাকোরিয়াস পাওয়ার

@ অ্যাকোরিয়াস পাওয়ার - হ্যাঁ আপনি যদি আমার উত্তরগুলিতে সম্পাদনাগুলি রোল করেন তবে আপনি দেখতে পাবেন যে আমি মূলত সংখ্যাসূচক সূচকটিও অন্তর্ভুক্ত করেছি, তবে আপনি নাম হ্যাশ চেয়েছিলেন তাই এটিকে ফেলে দিয়েছেন।
— slm

লক্ষ্য করুন ${!var[index]}না কাজ, শুধুমাত্র নেই ${!var[@]}বা ${!var[*]}না :(
— i336_

@ i336_ - !এটি এখনই শেষ করুন ${var[index]}। tldp.org/LDP/abs/html/arrays.html
— SLM

দুঃখিত, ব্যাখ্যা: আমি সংখ্যার সূচক এন এর জন্য সহযোগী কী নির্ধারণ করার চেষ্টা করছিলাম । আমি বুঝতে পেরেছিলাম যে আমি খুব সহজেই কাজটি করতে পারি keys=(${!var[@]})এবং তারপরে ${keys[n]}আমাকে সূচকটি দিয়েছিলাম তবে একই সাথে আমি বুঝতে পারি যে আমার পদ্ধতির পুনর্বিবেচনা করা দরকার।
— i336_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.