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

سرور مجازی NVMe

آرایه های Bash

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



آرایه ها یکی از پرکاربردترین و اساسی ترین ساختارهای داده هستند. شما می توانید یک آرایه را به عنوان متغیری در نظر بگیرید که چندین متغیر را در آن ذخیره می کند. آرایه ها روشی مناسب برای نمایش و دستکاری گروهی از عناصر داده مرتبط به عنوان یک موجودیت واحد ارائه می دهند.

در این مقاله، آرایه های 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

نتیجه

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

پیشنهاد می‌کنیم بخوانید:  روش راه اندازی سرور FTP با VSFTPD روشن CentOS 8

اگر سوال یا بازخوردی دارید، در کامنت بگذارید.

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

زمان انتشار: 1403-02-08 12:48:02

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

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

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