نحوه استفاده از آرایه های Bash

Bash بهترین انتخاب برای اتوماسیون برای کاربران لینوکس است. از آنجایی که اتوماسیون اغلب با هزاران عنصر سروکار دارد، دانستن اینکه آرایه bash چیست، ضروری است.

با آرایه های bash، مدیریت VPS یا سرورهای فیزیکی بسیار آسان تر است. این آموزش انواع مختلف آرایه های bash را به شما نشان می دهد و نمونه های مفیدی را ارائه می دهد.

آرایه bash یک ساختار داده ای است که برای ذخیره اطلاعات به صورت نمایه شده طراحی شده است. به عبارت دیگر، آرایه bash گروه بزرگی از متغیرها است. برخلاف آرایه‌های معمولی که در سایر زبان‌های برنامه‌نویسی استفاده می‌شوند، آرایه‌های bash می‌توانند انواع مختلفی از عناصر را ذخیره کنند. به عنوان مثال، می توانید از یک آرایه bash برای ذخیره رشته ها و اعداد استفاده کنید.

دو نوع آرایه bash وجود دارد:

  • نمایه شده است – آرایه از طریق اعداد صحیح یا اعداد ارجاع داده می شود.
  • انجمنی – آرایه از طریق رشته ها یا مجموعه ای از کاراکترها و کلمات ارجاع داده می شود.

به یاد داشته باشید که bash از آرایه های چند بعدی پشتیبانی نمی کند، بنابراین اضافه کردن آرایه در یک آرایه ممکن نیست.

روش اعلان آرایه در Bash

چند راه برای اعلام آرایه های نمایه شده و انجمنی در bash وجود دارد. شایان ذکر است که اندازه آرایه bash نیازی به اعلام قبلی ندارد زیرا آرایه های bash محدودیت بالایی ندارند. روی تعداد عناصری که می توانند ذخیره کنند.

آرایه نمایه شده

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

اولین گزینه این است که یک آرایه را با استفاده از پوسته داخلی اعلام کنید اعلام با پرچم گذاری کنید و به آرایه عناصر آن را بدهید:

declare -a IndexedArray
IndexedArray[0]=car
IndexedArray[1]=plane
IndexedArray[2]=bike

همین امر بدون اعلام ساخته شده:

IndexedArray[0]=car
IndexedArray[1]=plane
IndexedArray[2]=bike

یا با رفتن به موارد زیر آن را ساده تر کنید:

IndexedArray=(car plane bike)

به یاد داشته باشید که نمایه سازی در شروع می شود 0، بنابراین مثال بالا به را اختصاص می دهد ماشین عنصر آرایه به 0 فهرست مطالب.

با این حال، گزینه ای برای تنظیم یک آرایه با شاخص ها وجود دارد:

IndexedArray=([0]=’car’ [1]=’plane’ [2]=’bike’)

یکی از ویژگی های جالب آرایه های bash این است که دنبال کردن اعداد فهرست به ترتیب ضروری نیست. به عنوان مثال، شما می توانید تنها عناصر اول و سوم را اعلام کنید در حالی که عنصر دوم یک آرایه را خالی بگذارید:

IndexedArray[0]=car
IndexedArray[2]=bike

آرایه انجمنی

در حالی که آرایه های نمایه شده به این نیاز ندارند اعلام در داخل، ایجاد یک آرایه bash انجمنی بدون اعلام اولیه آن امکان پذیر نخواهد بود:

declare -A AssociativeArray

بعد، مقادیر را اضافه کنید. به خاطر داشته باشید که کلید باید یک رشته باشد:

AssociativeArray[color]=blue
AssociativeArray[type]=car
AssociativeArray[topspeed]=200

یک راه جایگزین خواهد بود:

declare -A AssociativeArray=( [color]=blue [type]=car [topspeed]=200 )

چگونه یک متغیر به آرایه Bash اضافه کنیم

به راحتی متغیرهای bash را با استفاده از += اپراتور. به عنوان مثال process برای یک آرایه نمایه شده به شکل زیر است:

IndexedArray=(car plane bike)
IndexedArray+=(motorcycle)

آرایه نمایه شده اکنون یک عنصر جدید دارد. به یاد داشته باشید که این روش به انتهای یک آرایه اضافه می شود. بنابراین، موتورسیکلت عنصر به عنوان آخرین عنصر اضافه خواهد شد.

پیشنهاد می‌کنیم بخوانید:  روش نصب LAMP روی CentOS 7 - گام به گام

برای آرایه های انجمنی، process بسیار شبیه است به جز، شما باید کلیدها را به همراه تمام عناصر مشخص کنید:

declare -A AssociativeArray
AssociativeArray[color]=blue
AssociativeArray+=([tires]=alloy [engine]=gasoline)

روش ارجاع و چاپ یک عنصر آرایه

کاربران می توانند مقادیر آرایه bash را با استفاده از شاخص یا کلید عنصر ارجاع دهند. برای انجام این کار، یک آرایه ایندکس شده ایجاد کنید:

IndexedArray=(car plane bike)

برای ارجاع به اولین متغیر آرایه، از نحو زیر استفاده کنید:

${IndexedArray[0]}

آن را با آن ترکیب کنید اکو، و موارد زیر را دریافت خواهید کرد:

echo ${IndexedArray[0]}

خروجی اولین عنصر را به شما نشان می دهد. در این مورد، آن است ماشین. همین منطق در هنگام ارجاع و چاپ یک آرایه انجمنی اعمال می شود:

declare -A AssociativeArray=( [color]=blue [type]=car [topspeed]=200 )
echo ${AssociativeArray[type]}

خروجی خواهد بود ماشین همچنین.

برای چاپ کل آرایه، استفاده کنید @ به عنوان یک شاخص اسکریپت کامل به این صورت است:

اسکریپت Bash برای ایجاد و چاپ یک آرایه نمایه شدهاسکریپت Bash برای ایجاد و چاپ یک آرایه نمایه شده

همچنین می توانید به جای آن کلیدهای یک آرایه را چاپ کنید. برای انجام این کار، قبل از نام آرایه یک علامت تعجب اضافه کنید:

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

چگونه عناصر آرایه Bash را حذف کنیم

حذف عناصر آرایه مشابه ارجاع به آنهاست. از یک شاخص یا یک کلید ترکیب شده با تنظیم نشده داخلی برای حذف یک عنصر آرایه.

در اینجا مثالی از حذف یک عنصر از یک آرایه نمایه شده آورده شده است:

اسکریپت Bash برای نمایش دستور unset که برای حذف عناصر از آرایه استفاده می شوداسکریپت Bash برای نمایش دستور unset که برای حذف عناصر از آرایه استفاده می شود

منطق مشابهی برای آرایه های انجمنی اعمال می شود:

اسکریپت Bash دستور unset را برای آرایه‌های انجمنی نشان می‌دهد که برای حذف یک عنصر از آرایه استفاده می‌شود.اسکریپت Bash دستور unset را برای آرایه‌های انجمنی نشان می‌دهد که برای حذف یک عنصر از آرایه استفاده می‌شود.

برای حذف کل یک آرایه، مشخص کنید تنظیم نشده با نام آرایه همانطور که در اینجا نشان داده شده است:

اسکریپت شل برای حذف کامل آرایهاسکریپت شل برای حذف کامل آرایه

پس از تلاش برای چاپ عناصر آرایه چیزی نشان داده نمی شود زیرا تنظیم نشده ساخته شده آنها را حذف کرد.

روش حلقه زدن از طریق یک آرایه

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

اسکریپت پوسته با یک حلقه for برای تکرار و چاپ یک آرایهاسکریپت پوسته با یک حلقه for برای تکرار و چاپ یک آرایه

همچنین می توانید کلیدها را با عناصر آرایه ترکیب کرده و همه آنها را با هم چاپ کنید:

اسکریپت خط فرمان برای چاپ عناصر و کلیدهای یک آرایه انجمنیاسکریپت خط فرمان برای چاپ عناصر و کلیدهای یک آرایه انجمنی

روش ارسال یک آرایه به یک تابع

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

function Iteration
{
m=${#IndexedArray[@]}
for (( i=0; i<m; i++ ))
do
echo ${IndexedArray[$i]}
done
}
IndexedArray=(car bike plane)
Iteration ${IndexedArray[@]}

اجرا کردنش روی خط فرمان نتیجه زیر را به شما می دهد:

تابع Bash برای تکرار آرایهتابع Bash برای تکرار آرایه

نتیجه

Bash یکی از محبوب ترین پوسته ها و زبان های دستوری برای سرورهای مجازی و همچنین سرورهای فیزیکی مبتنی بر لینوکس است. با استفاده از برنامه‌نویسی و آرایه‌های bash، کاربران می‌توانند کار خود را خودکار کرده و صدها ساعت را در انجام دستی کارها صرفه‌جویی کنند.

پیشنهاد می‌کنیم بخوانید:  بایگانی VPS

در این آموزش، اکثر عملیات آرایه را پوشش داده ایم:

  • اعلان و ایجاد آرایه های نمایه شده و انجمنی.
  • افزودن و حذف متغیرها از آرایه ها
  • ارجاع و چاپ آرایه ها.
  • حلقه زدن از میان آرایه ها و ارسال آنها به توابع.

ما همچنین چند نمونه ارائه کردیم که می‌توانید هنگام سرهم‌بندی با bash از آنها استفاده کنید. اگر سوال یا نظری دارید، در زیر بنویسید.

آرایه Bash در مقابل رشته

یک آرایه bash مجموعه ای از عناصر را ذخیره می کند – به عنوان مثال، مجموعه ای از اعداد به همراه لیستی از کلمات. از طرف دیگر، یک رشته را می توان یک آرایه در نظر گرفت، اما فقط می تواند کاراکترها را ذخیره کند و هیچ چیز دیگری.

آرایه Bash در مقابل لیست

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

معنی {} در Bash چیست؟

مهاربندهای فرفری بدون علامت $ به عنوان بسط مهاربند در نظر گرفته می شوند و برای ایجاد رشته های دلخواه استفاده می شوند. برای ساخت آرایه ها می توانید از بریس ها استفاده کنید. مثلا، پژواک {0..100} اعداد صفر تا 100 را چاپ می کند.

آیا Bash یک زبان است؟

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

چگونه یک آرایه Bash را اکو کنیم؟

برای تکرار یک آرایه، از قالب استفاده کنید echo ${آرایه[0]}. آرایه نام آرایه شما است و 0 اگر یک آرایه انجمنی را تکرار می کنید، ایندکس یا کلید است. همچنین می توانید استفاده کنید @ یا * نمادها به جای یک شاخص برای چاپ کل آرایه.