Bash میں Index Arrays کا استعمال کیسے کریں۔

Bash My Index Arrays Ka Ast Mal Kys Kry



Bash اشاریہ شدہ صفوں کے لیے معاونت فراہم کرتا ہے، جو بنیادی طور پر ان عناصر کی فہرستیں ہیں جن تک ان کے اشاریہ نمبر کا استعمال کرتے ہوئے رسائی حاصل کی جا سکتی ہے۔ انڈیکس شدہ صفیں خاص طور پر اس وقت مفید ہوتی ہیں جب آپ بہت سی متعلقہ اقدار کو ذخیرہ کرنا اور ان میں ہیرا پھیری کرنا چاہتے ہیں، انڈیکس اریوں کو استعمال کرنے کا طریقہ جاننے کے لیے اس مضمون کو مزید پڑھیں۔

Index Arrays کیا ہیں؟

اشاریہ شدہ صفیں bash میں عناصر کا مجموعہ ہیں جن تک انڈیکس یا کلید کا استعمال کرتے ہوئے رسائی حاصل کی جا سکتی ہے۔ ان صفوں کو ایک مخصوص ترتیب میں ڈیٹا کو ذخیرہ کرنے اور بازیافت کرنے کے لیے استعمال کیا جا سکتا ہے، جس سے ڈیٹا کی بڑی مقدار کا انتظام کرنا آسان ہو جاتا ہے۔ bash میں ایک اشاریہ شدہ صف کا اعلان کرنے کا نحو درج ذیل ہے:

< array_name > = ( عنصر1 عنصر2 عنصر3... )

یہاں، array_name صف کا نام ہے، اور element1، element2، element3، اور اسی طرح کی قدریں ہیں جو صف میں محفوظ کی جانی ہیں۔ اقدار کو وائٹ اسپیس کے ذریعے الگ کیا گیا ہے اور نوٹ کریں کہ آپ ڈیکلیئر کمانڈ کو ایک صف بنانے کے لیے بھی استعمال کر سکتے ہیں۔







باش میں انڈیکسڈ اریوں کا استعمال کیسے کریں۔

bash میں انڈیکس اری بنانے کے لیے، آپ کو صرف ایک متغیر کا اعلان کرنا ہوگا اور اسے قوسین میں بند اور خالی جگہوں سے الگ کردہ اقدار تفویض کرنے کی ضرورت ہے۔ یہاں چند مثالیں ہیں جو یہ ظاہر کرتی ہیں کہ باش میں انڈیکسڈ صفوں کو کیسے استعمال کیا جائے:



Bash میں فہرست کو دوبارہ ترتیب دینا

اگر آپ کے پاس ایک خاص ترتیب میں اشیاء کی فہرست ہے اور آپ انہیں مختلف طریقے سے ترتیب دینا چاہتے ہیں۔ آپ آئٹمز کے لیے نیا آرڈر بنانے کے لیے انڈیکس سرنی کا استعمال کر سکتے ہیں، جیسا کہ:



#!/bin/bash
اشیاء = ( 'آم' 'انناس' 'اسٹرابیری' 'چیری' 'انگور' )
ترتیب = ( 4 2 0 3 1 )
کے لیے میں میں ' ${order[@]} '
کیا
بازگشت ${آئٹمز[$i]}
ہو گیا

اس مثال میں، ہم پانچ عناصر کے ساتھ آئٹمز نامی ایک صف بناتے ہیں۔ ہم آرڈر نامی ایک انڈیکس سرنی بھی بناتے ہیں، جو آئٹمز کے لیے ایک نئے آرڈر کی وضاحت کرتا ہے۔ اس کے بعد ہم آرڈر اری کے ذریعے لوپ کرتے ہیں اور آئٹمز کی صف سے متعلقہ آئٹم کو بازیافت کرنے اور اسے پرنٹ کرنے کے لیے ہر قدر کو بطور انڈیکس استعمال کرتے ہیں۔





Bash میں فہرست کو فلٹر کرنا

اگر آپ کے پاس آئٹمز کی فہرست ہے اور آپ شرط کی بنیاد پر کچھ آئٹمز کو فلٹر کرنا چاہتے ہیں۔ آپ مندرجہ ذیل شرائط پر پورا اترنے والے آئٹمز کے انڈیکس پر نظر رکھنے کے لیے انڈیکس سرنی کا استعمال کر سکتے ہیں:



#!/bin/bash
اشیاء = ( 'آم' 'انناس' 'اسٹرابیری' 'چیری' 'انگور' )
اشاریہ جات = ( )

کے لیے میں میں ' ${!آئٹمز[@]} '
کیا
اگر [ [ ${آئٹمز[$i]} == * 'ر' * ] ]
پھر
انڈیکس+= ( $i )
ہونا
ہو گیا

کے لیے میں میں ' ${انڈیکس[@]} '
کیا
بازگشت ${آئٹمز[$i]}
ہو گیا

اس مثال میں، ہم پانچ عناصر کے ساتھ آئٹمز نامی ایک صف بناتے ہیں۔ ہم ایک خالی انڈیکس سرنی بھی بناتے ہیں جسے انڈیکس کہتے ہیں۔ پھر ہم آئٹمز کی صف کو لوپ کرتے ہیں اور چیک کرتے ہیں کہ آیا ہر آئٹم میں 'r' کا حرف موجود ہے۔ اگر ایسا ہوتا ہے تو، ہم اس کا انڈیکس انڈیکس صف میں شامل کرتے ہیں۔ آخر میں، ہم اشاریہ جات کی صفوں کو لوپ کرتے ہیں اور آئٹمز کی صف سے متعلقہ آئٹم کو بازیافت کرنے اور اسے پرنٹ کرنے کے لیے ہر قدر کو بطور انڈیکس استعمال کرتے ہیں۔

باش میں گنتی کے واقعات

اگر آپ کے پاس آئٹمز کی فہرست ہے اور آپ ہر آئٹم کے واقعات کی تعداد گننا چاہتے ہیں، تو آپ شماروں پر نظر رکھنے کے لیے انڈیکس سرنی کا استعمال کر سکتے ہیں اور یہاں مظاہرے کے لیے ایک مثال ہے:

#!/bin/bash
اشیاء = ( 'آم' 'انناس' 'اسٹرابیری' 'چیری' 'انگور' )
شمار کرتا ہے = ( )

کے لیے میں میں ' ${!آئٹمز[@]} '
کیا
اگر [ [ ! ' ${شمار[@]} ' =~ ' ${آئٹمز[$i]} ' ] ]
پھر
شمار += ( ' ${آئٹمز[$i]} 1' )
اور
انڈیکس =$ ( بازگشت ' ${شمار[@]} ' | tr '' '\n' | گرفت -n '^ ${آئٹمز[$i]} ' | کے ساتھ )
شمار =$ ( بازگشت ' ${counts[$index-1]} ' | کاٹنا -d '' -f2 )
شمار کرتا ہے [ $index - 1 ] = ' ${آئٹمز[$i]} $((شمار+1) )'
ہونا
ہو گیا

کے لیے شمار میں ' ${شمار[@]} '
کیا
بازگشت $count
ہو گیا

یہ سب سے پہلے تاروں کی فہرست کے ساتھ 'آئٹمز' نامی ایک صف کو شروع کرتا ہے۔ پھر یہ ایک خالی صف کا اعلان کرتا ہے جسے 'گنتی' کہتے ہیں۔ A for loop 'آئٹمز' کی صف میں ہر آئٹم کے لیے اعادہ کرنے کے لیے بنایا گیا ہے اور ہر آئٹم کے لیے یہ چیک کرتا ہے کہ آیا یہ پہلے سے 'گنتی' صف میں موجود ہے یا نہیں۔

اگر یہ موجود نہیں ہے، تو یہ آئٹم اور 1 کی گنتی کو 'کاؤنٹس' صف میں شامل کر دیتا ہے۔ اگر یہ موجود ہے، تو یہ اس آئٹم کی گنتی کو 'گنتی' صف میں بڑھاتا ہے۔ آخر میں، ہر آئٹم کو پرنٹ کرنے کے لیے اور اس کے متعلقہ شمار کے لیے ایک اور لوپ استعمال کیا جاتا ہے۔ اس کوڈ کا آؤٹ پٹ 'آئٹمز' صف میں ہر آئٹم کی گنتی کو پرنٹ کرے گا، ڈپلیکیٹس کو الگ سے شمار کیا جائے گا۔

Bash میں ایک فہرست کو اپ ڈیٹ کرنا

اگر آپ کے پاس آئٹمز کی فہرست ہے اور آپ اس میں آئٹمز کو شامل کرنا یا ڈیلیٹ کرنا چاہتے ہیں تو آپ اس کے لیے انڈیکس ارے استعمال کر سکتے ہیں اور یہاں مظاہرے کے لیے ایک مثال ہے:

#!/bin/bash
اشیاء = ( 'آم' 'انناس' 'اسٹرابیری' 'چیری' 'انگور' )

# انڈیکس 2 پر انڈیکس شدہ صف میں ایک نیا عنصر شامل کرنا
اشیاء [ 6 ] = 'کینو'
# انڈیکس 2 پر موجود عنصر کو انڈیکس شدہ صف سے حذف کرنا
غیر سیٹ اشیاء [ 2 ]

# اپ ڈیٹ کردہ صف کو پرنٹ کرنا
بازگشت ' ${آئٹمز[@]} '

اسکرپٹ میں ایک انڈیکسڈ سرنی 'آئٹمز' کی تعریف پانچ ابتدائی عناصر کے ساتھ کی گئی ہے۔ ایک نیا عنصر شامل کرنے کے لیے، قدر کو صرف نحوی سرنی[انڈیکس] = قدر کا استعمال کرتے ہوئے مطلوبہ اشاریہ میں تفویض کیا جاتا ہے۔ اس اسکرپٹ میں، 'اورینج' کو صف کے انڈیکس 6 میں شامل کیا گیا ہے۔ کسی عنصر کو حذف کرنے کے لیے، ہم unset کمانڈ کا استعمال کرتے ہیں جس کے بعد عنصر کا اشاریہ ہم ہٹانا چاہتے ہیں۔ اس صورت میں، انڈیکس 2 ('اسٹرابیری') پر موجود عنصر کو حذف کر دیا جاتا ہے۔ اس کے بعد اپ ڈیٹ کردہ سرنی کو '${array[@]}' کا استعمال کرتے ہوئے پرنٹ کیا جاتا ہے، جو پوری صف کو پھیلا دیتا ہے۔

نتیجہ

اشاریہ شدہ صفیں باش کا ایک آسان ڈھانچہ ہے جو آپ کو ایک متغیر کا استعمال کرتے ہوئے متعدد اقدار کو ذخیرہ کرنے اور ان میں ہیرا پھیری کرنے کی اجازت دیتا ہے۔ انڈیکسڈ اریوں کے نحو اور استعمال کو سمجھ کر، آپ زیادہ موثر اور موثر باش اسکرپٹ لکھ سکتے ہیں۔