از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
آرایه های Bash
سرفصلهای مطلب
آرایه ها یکی از پرکاربردترین و اساسی ترین ساختارهای داده هستند. شما می توانید یک آرایه را به عنوان متغیری در نظر بگیرید که چندین متغیر را در آن ذخیره می کند. آرایه ها روشی مناسب برای نمایش و دستکاری گروهی از عناصر داده مرتبط به عنوان یک موجودیت واحد ارائه می دهند.
در این مقاله، آرایه های Bash را پوشش می دهیم و روش استفاده از آنها را در اسکریپت های Bash خود توضیح می دهیم.
آرایه های Bash
Bash از انواع آرایه های عددی نمایه شده و انجمنی تک بعدی پشتیبانی می کند. آرایه های عددی با استفاده از اعداد صحیح و انجمنی با استفاده از رشته ها ارجاع داده می شوند.
آرایههای ایندکسشده عددی را میتوان از انتها با استفاده از شاخصهای منفی مشاهده کرد. شاخص از -1
به آخرین عنصر اشاره می کند. لازم نیست شاخص ها به هم پیوسته باشند.
برخلاف اکثر زبان های برنامه نویسی، عناصر آرایه Bash لازم نیست از یک نوع داده باشند. این بدان معنی است که می توانید یک آرایه حاوی رشته ها و اعداد ایجاد کنید.
Bash از آرایه های چند بعدی پشتیبانی نمی کند و شما نمی توانید عناصر آرایه ای که آرایه نیز هستند داشته باشید.
هیچ محدودیتی وجود ندارد روی حداکثر تعداد عناصری که می توان در یک آرایه ذخیره کرد.
ایجاد آرایه های Bash
در Bash، آرایه ها را می توان با استفاده از چندین روش مختلف مقداردهی اولیه کرد.
ایجاد آرایه های شاخص عددی
متغیرهای Bash بدون تایپ هستند. هر متغیری را می توان به عنوان یک آرایه نمایه شده بدون اعلام آن استفاده کرد.
برای اعلان صریح یک آرایه، از declarebuildin استفاده کنید:
declare -a array_name
یکی از راه های ایجاد یک آرایه نمایه شده استفاده از فرم زیر است:
array_name[index_1]=value_1
array_name[index_2]=value_2
array_name[index_n]=value_n
جایی که index_*
یک عدد صحیح مثبت است.
راه دیگر برای ایجاد یک آرایه عددی این است که لیستی از عناصر داخل پرانتز را مشخص کنید که با فضای خالی از هم جدا شده اند:
array_name=( element_1 element_2 element_N )
وقتی آرایه با استفاده از فرم بالا ایجاد می شود، نمایه سازی از صفر شروع می شود، یعنی اولین عنصر دارای اندیس است 0
.
ایجاد آرایه های انجمنی
آرایه های انجمنی نوعی آرایه هستند که در آن هر عنصر به جای شاخص با یک کلید منحصر به فرد شناسایی می شود.
برخلاف نمایهسازی عددی، آرایههای انجمنی باید قبل از استفاده اعلام شوند.
برای اعلام یک آرایه انجمنی، از عبارت استفاده کنید declare
ساخته شده با -A
گزینه (بزرگ):
declare -A array_name
آرایه های انجمنی با استفاده از فرم زیر ایجاد می شوند:
declare -A array_name
array_name[index_foo]=value_foo
array_name[index_bar]=value_bar
array_name[index_xyz]=value_xyz
جایی که index_*
می تواند هر رشته ای باشد.
همچنین می توانید با استفاده از فرم زیر یک آرایه انجمنی ایجاد کنید:
declare -A array_name
array_name=(
[index_foo]=value_foo
[index_bar]=value_bar
[index_xyz]=value_xyz
)
عملیات آرایه
اگر در برنامه نویسی Bash تازه کار هستید، آرایه ها در Bash در ابتدا ممکن است گیج کننده باشند. با این حال، پس از خواندن این مقاله، آنها را بهتر درک خواهید کرد.
عناصر مرجع
برای ارجاع به یک عنصر، باید شاخص عنصر را بدانید.
هر عنصری را می توان با استفاده از نحو زیر ارجاع داد:
${array_name[index]}
${}
برای اجتناب از عملگرهای گسترش نام فایل پوسته مورد نیاز است.اجازه دهید print عنصر با شاخص از 1
:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print element
echo ${my_array[1]}
Helium
اگر استفاده می کنید @
یا *
به عنوان یک شاخص، کلمه به همه اعضای آرایه گسترش می یابد.
به print از همه عناصر استفاده می کنید:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium
تنها تفاوت بین @
و *
زمانی است که فرم ${my_array[x]}
توسط نقل قول های دوگانه احاطه شده است. در این مورد، *
به یک کلمه منفرد گسترش می یابد که در آن عناصر آرایه با فاصله از هم جدا می شوند. @
هر عنصر آرایه را به یک کلمه جداگانه گسترش می دهد. این امر به ویژه هنگام استفاده از فرم برای بی سوادی از طریق عناصر آرایه مهم است.
به print کلیدهای آرایه را اضافه کنید !
عملگر قبل از نام آرایه:
${!array_name[index]}
به عنوان مثال:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${!my_array[@]}"
0 1 2 3
طول آرایه
اگر می خواهید تعداد عناصر یک آرایه را تعیین کنید، می توانید از دستور زیر برای بدست آوردن طول آرایه استفاده کنید:
${#array_name[@]}
#
کاراکتر قبل از نام آرایه## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## array Length
echo ${#my_array[@]}
4
از طریق آرایه حلقه بزنید
وقتی آرایه ای از آیتم ها دارید، اغلب نیاز به انجام عملیات دارید روی هر مورد. یکی از راههای رسیدن به این هدف، تکرار روی آرایه با استفاده از یک حلقه است. را for
حلقه به شما این امکان را می دهد که به هر آیتم در آرایه به صورت جداگانه دسترسی داشته باشید و عملیات مورد نظر را انجام دهید روی آی تی.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${my_array[@]}"
do
echo "$i"
done
کد بالا روی آرایه و تکرار می شود print هر عنصر در یک خط جدید:
Hydrogen
Helium
Lithium
Beryllium
در اینجا مثالی از روش انجام این کار آورده شده است print تمام کلیدها و مقادیر:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${!my_array[@]}"
do
echo "$i" "${my_array[$i]}"
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
راه دیگر برای حلقه زدن در یک آرایه این است که طول آرایه را بدست آورید و از آن استفاده کنید C-style
حلقه:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
# Length of the array
length=${#my_array[@]}
# Array Loop
for (( i=0; i < ${length}; i++ ))
do
echo $i ${my_array[$i]}
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
افزودن یک عنصر جدید
برای افزودن یک عنصر جدید به a bash آرایه و شاخص آن را مشخص کنید، از فرم زیر استفاده کنید:
my_array[index_n]="New Element"
به عنوان مثال:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new element
my_array[9]="Aluminum"
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Aluminum
راه دیگری برای افزودن یک عنصر جدید به آرایه بدون تعیین شاخص، استفاده از علامت است +=
اپراتور. می توانید یک یا چند عنصر اضافه کنید:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new elements
my_array+=( Cobalt Nickel )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
حذف یک عنصر
برای حذف یک عنصر، باید شاخص عنصر را بدانید. یک عنصر را می توان با استفاده از unset
دستور:
unset my_array[index]
بیایید یک مثال را ببینیم:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## remove element
unset my_array[2]
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Beryllium
نتیجه
ما روش ایجاد آرایه های عددی ایندکس شده و انجمنی را توضیح داده ایم. همچنین روش تکرار در میان آرایه ها، محاسبه طول آرایه و افزودن و حذف عناصر را نشان داده ایم.
اگر سوال یا بازخوردی دارید، در کامنت بگذارید.
terminal
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1403-02-08 12:48:02