وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

آشنایی با آرایه های انجمنی در لینوکس Bash با مثال

0 10
زمان لازم برای مطالعه: 5 دقیقه


آرایه های انجمنی یک نوع داده انتزاعی هستند که می توانند به عنوان فرهنگ لغت یا نقشه در نظر گرفته شوند. تفاوت آنها با آرایه های دیگر این است که آنها جفت های کلید-مقدار را نگه می دارند که در آن کلیدها می توانند رشته های دلخواه و تعریف شده توسط کاربر به جای اعداد شاخص معمولی باشند. آرایه های وابسته دو ویژگی اصلی دارند:

  • هر کلید در آرایه فقط یک بار می تواند ظاهر شود. شما می توانید آن را به عنوان یک شناسه منحصر به فرد برای یک کاربر در یک لیست در نظر بگیرید.
  • یک مقدار می تواند بیش از یک بار در یک آرایه ظاهر شود. به عنوان مثال، دو نفر در یک لیست می توانند نام یکسانی داشته باشند اما باید شناسه های کاربری متفاوتی داشته باشند.

در این مقاله روش تعریف و مقداردهی اولیه آرایه های انجمنی در لینوکس را توضیح خواهیم داد bash. بیشتر توضیح خواهیم داد روی قدرت آرایه های انجمنی با کمک مثال های مختلف.

ما نمونه های ذکر شده در این مقاله را اجرا کرده ایم روی یک سیستم Debian 10 Buster. با این حال، شما به راحتی می توانید تکرار کنید روی تقریبا تمام توزیع های لینوکس.

بررسی پیش نیازها

برای استفاده از آرایه های انجمنی روی لینوکس Bash، شما GNU نسخه Bash باید برابر یا بالاتر از نسخه 4 باشد. ترمینال لینوکس خود را با دسترسی به آن از طریق جستجوی Application Launcher باز کنید. سپس دستور زیر را وارد کنید تا نسخه نصب شده خود را بررسی کنید bash:

$ bash — نسخه

آشنایی با آرایه های انجمنی در لینوکس Bash با مثال

در حال حاضر من bash نسخه 5.0.3 است، بنابراین من آماده هستم. در مورد شما bash نسخه کمتر از 4 است، می توانید ارتقا دهید bash با اجرای دستور زیر به صورت sudo:

$ sudo apt-get نصب کنید –فقط ارتقا bash

اعلان یک آرایه انجمنی و راه اندازی آن

اعلان یک آرایه Associative بسیار ساده است bash و از طریق دستور declare قابل انجام است:

$ اعلام “ArrayName”

در مثال ما، یک متغیر آرایه به نام sampleArray1 را به صورت زیر اعلام می کنیم:

$ اعلام نمونه آرایه 1

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مرحله بعدی این است که مقادیر مورد نیاز برای آرایه خود را مقداردهی اولیه کنید. در مثال ما، می‌خواهیم آرایه‌ای داشته باشیم که در آن مقادیر نام چند کشور و کلیدها اختصارات نام کشور مربوطه آنها باشد. در اینجا مقادیر آرایه را یکی یکی به صورت زیر تغذیه می کنیم:

$ آرایه نام[key]= ارزش

مثال:

$ sampleArray1[CHN]= چین
$ sampleArray1[JPN]=ژاپن
$ sampleArray1[KOR]= کره
$ sampleArray1[TWN]=تایوان
$ sampleArray1[TH]= تایلند

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

یک جایگزین سریع، اعلام و مقداردهی اولیه یک آرایه در یک واحد است bash دستور به صورت زیر

$ اعلام آرایه نام=( [key1]= ارزش 1 [key2]= ارزش 2 [Key3]= مقدار 3…. )

در اینجا چگونه می توانیم آرایه ذکر شده خود را به صورت متناوب اعلام و مقداردهی اولیه کنیم:

$ اعلام نمونه آرایه 1=( [CHN]= چین [JPN]=ژاپن [KOR]= کره [TWN]=تایوان
[TH]= تایلند )

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

اکنون نمونه هایی را ارائه می کنیم که به تفصیل توضیح داده می شود روی آنچه می توانید با آرایه های Associative انجام دهید bash:

پیشنهاد می‌کنیم بخوانید:  16 مثال Bash Regular Expression (RegEx) با استفاده از دستورات grep، sed و awk

مثال 1: دسترسی به کلیدها و مقادیر آرایه

در این مثال توضیح خواهیم داد که چگونه می توانید:

  • یک مقدار در مقابل یک کلید چاپ کنید
  • همه کلیدهای آرایه را یکجا چاپ کنید
  • همه مقادیر آرایه را یکجا چاپ کنید

و،

  • همه جفت‌های کلید-مقدار را همزمان چاپ کنید

چاپ

تو می توانی print یک مقدار در برابر یک کلید با استفاده از دستور دستور زیر:

$ echo ${ArrayName[keyName]}

در اینجا روش دسترسی به نام کامل یک کشور با ارائه مخفف نام کشور، از نمونه آرایه1 آمده است:

$ echo ${sampleArray1[CHN]}

$ echo ${sampleArray1[TWN]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

اگر علاقه مند هستید چاپ تمام کلیدها از آرایه انجمنی خود، می توانید این کار را با استفاده از نحو زیر انجام دهید:

$ برای کلید که در ${!ArrayName[@]}; انجام دادن echo کلید $; انجام شده

دستور زیر خواهد بود print تمام اختصارات نام کشور از sampleArray1 من توسط

استفاده از حلقه for:

$ برای کلید که در ${!sampleArray1[@]}; انجام دادن echo کلید $; انجام شده

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

جایگزین دیگری برای چاپ همه کلیدها از آرایه استفاده از بسط پارامتر است. دستور زیر خواهد بود print همه کلیدها در یک خط:

$ echo ${!sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

اگر علاقه مند هستید چاپ همه مقادیر آرایه به یکباره، می توانید با استفاده از حلقه for به صورت زیر این کار را انجام دهید:

$ برای val که در ${ArrayName[@]}; انجام دادن echo $val; انجام شده

دستور زیر خواهد بود print تمام نام های کشوری که در نمونه آرای1 من ذخیره شده اند:

$ برای val که در ${sampleArray1[@]}; انجام دادن echo $val; انجام شده

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

جایگزین دیگری برای چاپ همه مقادیر از آرایه، استفاده از بسط پارامتر است. دستور زیر خواهد بود print همه مقادیر در یک خط:

$ echo ${sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مثال مفید بعدی خواهد بود print همه جفت های کلید-مقدار یکباره با استفاده از حلقه for به صورت زیر:

$ برای کلید که در ${!sampleArray1[@]}; انجام دادن echo کلید $ مخفف است
${sampleArray1[$key]}
; انجام شده

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

البته می‌توانید این بازیابی اطلاعات را در پیچیده‌تر و معنادارتر کنید bash اسکریپت ها

پیشنهاد می‌کنیم بخوانید:  روش حذف دو نقل قول در Bash

مثال 2: شمارش آیتم های آرایه

برای شمارش و می توان از دستور زیر استفاده کرد print تعداد عناصر در آرایه انجمنی شما:

$ echo ${#ArrayName[@]}

خروجی دستور زیر نشان می دهد که من پنج آیتم در sampleArray1 خود دارم:

$ echo ${#sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مثال 3: افزودن داده های جدید در Array

اگر می‌خواهید پس از اعلام و مقداردهی اولیه یک مورد به آرایه‌ای اضافه کنید، این نحوی است که می‌توانید دنبال کنید:

$ ArrayName+=([key]= ارزش)

در مثالم، من می‌خواهم کشور دیگری را به همراه نام اختصاری آن استان اضافه کنم، بنابراین از دستور زیر استفاده می‌کنم:

$ sampleArray1+=([AL]= آلاباما)

تکرار مقادیر آرایه اکنون نشان می دهد که کشور جدید به آرایه من اضافه شده است:

$ echo ${sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مثال 4: حذف آیتم از آرایه

با حذف یک ورودی از آرایه انجمنی، می توانید آن را به عنوان یک آیتم آرایه حذف کنید. این همان نحو تنظیم نشده ای است که می توانید برای انجام این کار از آن استفاده کنید:

$ تنظیم نشده آرایه نام[Key]

در مثالم، من می‌خواهم جفت کلید-مقدار “AL-Alabama” را از آرایه خود حذف کنم، بنابراین کلید “AL” را در دستور خود تنظیم نمی‌کنم:

$ تنظیم نشده نمونه آرایه 1[AL]

تکرار مقادیر آرایه اکنون نشان می دهد که مقدار کلید AL-Alabama اکنون از آرایه من حذف شده است:

$ echo ${sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مثال 5: بررسی وجود آیتم در آرایه

با استفاده از شرط if به روش زیر، می توانید بررسی کنید که آیا یک مورد در آرایه انجمنی شما موجود است یا اکنون:

$ اگر [ ${ArrayName[searchKEY]+_} ]; سپس echo “وجود دارد”; دیگر echo “در دسترس نیست”; فی

به عنوان مثال، اگر بررسی کنم که آیا مورد اخیراً حذف شده AL-Alabama در آرایه من وجود دارد، پیام زیر چاپ خواهد شد:

$ اگر [ ${sampleArray1[AL]+_} ]; سپس echo “وجود دارد”; دیگر echo “در دسترس نیست”; فی

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

اگر موردی را که وجود دارد بررسی کنم، نتیجه زیر چاپ خواهد شد:

$ اگر [ ${sampleArray1[JPN]+_} ]; سپس echo “وجود دارد”; دیگر echo “در دسترس نیست”; فی

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

مثال 6: حذف یک آرایه

می توانید یک آرایه Associative را از خود حذف کنید bash حافظه را با استفاده از دستور unset به شرح زیر انجام دهید:

$ تنظیم نشده آرایه نام

با استفاده از دستور ساده زیر نمونه Array1 خود را از حافظه حذف خواهم کرد:

$ تنظیم نشده نمونه آرایه 1

حالا وقتی سعی می کنم print تمام مقادیر آرایه را از طریق دستور زیر دریافت نمی کنم.

$ echo ${sampleArray1[@]}

آشنایی با آرایه های انجمنی در لینوکس Bash با مثالآشنایی با آرایه های انجمنی در لینوکس Bash با مثال

با استفاده از این مثال ها در لینوکس خود bash اسکریپت ها، می توانید از قدرت آرایه های انجمنی برای دستیابی به راه حلی برای بسیاری از مشکلات پیچیده استفاده کنید.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 13:32:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید