مقدمه
دانستن نحوه کار با آرایه ها در اسکریپت های پوسته به شما کمک می کند تا با مجموعه داده های بزرگتر به شیوه ای بسیار کارآمد کار کنید. اما آرایه ها چیست و چگونه می توان آرایه ایجاد کرد؟ بیایید دریابیم.
آرایه ها چه هستد؟
اگر قبلاً درک اولیه ای از هر زبان برنامه نویسی دارید، می دانید که آرایه ها چیست. اما برای افراد ناآشنا، بیایید به اصول اولیه آرایه ها بپردازیم و نحوه کار با آنها را بیاموزیم.
متغیرها عناصر تک داده را ذخیره می کنند. از سوی دیگر، آرایه ها می توانند تقریباً تعداد نامحدودی از عناصر داده را ذخیره کنند. هنگام کار با حجم زیادی از داده ها، متغیرها می توانند بسیار ناکارآمد باشند و استفاده از آرایه ها بسیار مفید است.
بیایید نحوه ایجاد آرایه در اسکریپت های پوسته را بیاموزیم.
ایجاد آرایه در اسکریپت های شل
دو نوع آرایه وجود دارد که می توانیم با آنها کار کنیم، در اسکریپت های پوسته.
- آرایه های نمایه شده – عناصر را با شاخصی که از 0 شروع می شود ذخیره کنید
- آرایه های انجمنی – عناصر را در جفت های کلید-مقدار ذخیره کنید
آرایه پیش فرض ایجاد شده یک آرایه نمایه شده است. اگر نام ایندکس ها را مشخص کنید، به یک آرایه انجمنی تبدیل می شود و به جای اعداد، می توان به عناصر با استفاده از نام ایندکس دسترسی پیدا کرد.
اعلان آرایه ها:
root@ubuntu:~# declare -A assoc_array
root@ubuntu:~# assoc_array[key]=value
OR
root@ubuntu:~# declare -a indexed_array
root@ubuntu:~# indexed_array[0]=value
به حروف بزرگ و کوچک a توجه کنید. حروف بزرگ A برای اعلام یک آرایه انجمنی استفاده می شود در حالی که حروف کوچک a برای اعلام یک آرایه نمایه شده استفاده می شود.
کلمه کلیدی declare برای بیان صریح آرایه ها استفاده می شود اما واقعاً نیازی به استفاده از آنها ندارید. هنگامی که در حال ایجاد یک آرایه هستید، می توانید به سادگی مقادیر را بر اساس نوع آرایه ای که می خواهید بدون اعلام صریح آرایه ها مقداردهی اولیه کنید.
کار با آرایه ها در اسکریپت های شل
اکنون که نحوه ایجاد آرایه را می دانید، بیایید نحوه کار با آرایه ها را بیاموزیم. از آنجایی که اینها مجموعهای از عناصر داده هستند، میتوانیم همزمان با حلقهها و آرایهها برای استخراج نقاط داده مورد نیاز کار کنیم.
1. دسترسی به عناصر آرایه به صورت جداگانه
از آنجایی که می دانیم هر نقطه داده به صورت جداگانه ایندکس می شود، می توانیم با تعیین نمایه آرایه مانند شکل زیر به تمام عناصر آرایه دسترسی داشته باشیم:
assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}
به طور مشابه، اجازه دهید به برخی از عناصر آرایه نمایه شده دسترسی پیدا کنیم. ما میتوانیم تمام عناصر آرایه شاخص را با جدا کردن فاصلهها مشخص کنیم، زیرا ایندکس به طور خودکار برای هر یک از آن عناصر تولید میشود.
index_array=(1 2 3 4 5 6)
echo ${index_array[0]}
همانطور که می بینید، عنصر اول به طور خودکار بر اساس شاخص 0 چاپ می شود.
2. خواندن عناصر آرایه به صورت متوالی
اگر از قبل حلقهها را بشناسید، این کار آسانی خواهد بود. اگر این کار را نکنید، در یک آموزش آینده به آنها خواهیم پرداخت. ما از حلقههای while یا for در اسکریپتهای پوسته برای کار در عناصر آرایه استفاده خواهیم کرد. اسکریپت زیر را کپی کنید و آن را به عنوان <filename>.sh ذخیره کنید
#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
done
اسکریپت بالا خروجی زیر را خواهد داشت:
اکنون ممکن است متوجه index_array[@] شده باشید و اگر میپرسید که نماد @ برای چیست، ما هم اکنون به همین موضوع میپردازیم.
عملیات داخلی برای آرایه ها در اسکریپت های پوسته
اکنون که نحوه دسترسی به عناصر به صورت جداگانه و استفاده از حلقههای for را یاد گرفتید، بیایید عملیات مختلفی را که بهطور پیشفرض برای آرایهها در دسترس هستند، بیاموزیم.
1. به همه عناصر یک آرایه دسترسی داشته باشید
نحوه دسترسی به عناصر را با ارائه شاخص یا کلید آرایه یاد گرفتیم. اما اگر بخواهیم همه عناصر را همزمان چاپ کنیم یا با همه عناصر کار کنیم، می توانیم از عملگر دیگری استفاده کنیم که علامت [@] است.
همانطور که در مثال بالا متوجه شدید، زمانی که میخواستم تمام عناصر آرایه را با استفاده از حلقه for حلقه بزنم، از این نماد استفاده کردم.
echo ${assoc_array[@]}
موارد بالا تمام عناصر ذخیره شده در آرایه assoc را چاپ می کند.
2. تعداد عناصر یک آرایه را بشمارید
مشابه نماد @ بالا، ما نماد # را داریم که میتوان پیشوند نام آرایهای گذاشت تا تعداد عناصر ذخیرهشده در آرایه را به ما ارائه دهد. بیایید ببینیم چگونه کار می کند.
echo ${#index_array[@]}
اگر می خواهید تعداد کاراکترهای استفاده شده برای یک عنصر خاص را بشمارید، می توانیم به سادگی علامت @ را با ایندکس جایگزین کنیم.
3. عناصر آرایه فردی را حذف کنید
ما می دانیم چگونه عناصر آرایه را اضافه کنیم و آنها را نیز چاپ کنیم. بیایید یاد بگیریم که چگونه عناصر خاص را حذف کنیم. برای این منظور از کلمه کلیدی unset استفاده می کنیم.
unset index_array[1]
نام آرایه و شناسه شاخص را در مثال کد بالا جایگزین کنید و عنصر آرایه مورد نظر خود را حذف کرده اید. خیلی ساده است، اینطور نیست؟
نتیجه
اسکریپت های Shell بسیار وسیع هستند و می توانند هر عملکردی را که می توانید در ترمینال انجام دهید با شخص مناسبی که اسکریپت را می نویسد جایگزین کنند. برخی از قابلیتهای اضافی آرایهها در اسکریپتهای پوسته نیز شامل امکان کار با regex (عبارات منظم) است. ما می توانیم از عبارات منظم مختلف برای دستکاری عناصر آرایه در اسکریپت های پوسته استفاده کنیم.
در حال حاضر، امیدواریم که درک خوبی از ایجاد و کار با آرایه ها داشته باشید و بتوانید از آرایه ها در اسکریپت خود استفاده کنید. در زیر کامنت بگذارید تا نظر خود را با ما در میان بگذارید و اگر سوالی در مورد این موضوع دارید با ما در میان بگذارید.