از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
یک عنصر خاص را از یک آرایه در Bash حذف کنید
سرفصلهای مطلب
Bash فقط آرایههای انجمنی و آرایههای عددی فهرستشده یک بعدی را کنترل میکند. در برنامه نویسی Bash، آرایه ها لزوماً از گروهی از عناصر مرتبط تشکیل نمی شوند. عناصر آرایه می توانند رشته ها و اعداد باشند زیرا Bash بین آنها تفاوت قائل نمی شود. در این مقاله عملیات حذف را انجام می دهیم روی آرایه های Bash با رویکردهای مختلف. برای حذف آن از آرایه باید موقعیت شاخص عنصر در آرایه یا کلید را بدانیم. دستور “unset” معمولاً در Bash برای حذف یک عنصر استفاده می شود.
مثال 1: حذف یک عنصر آرایه خاص در اسکریپت Bash
دستور unset برای پاک کردن عنصر خاص از آرایه استفاده می شود. دستور unset به نام متغیری که آرایه در آن تعریف شده است و همچنین شاخص عنصر نیاز دارد. در اسکریپت Bash زیر، ابتدا متغیر MyArray را با استفاده از کلمه کلیدی “declare” با گزینه “-a” ایجاد می کنیم. سپس، متغیر “MyArray” با عناصر رشته درج می شود. سپس، دستور “unset” را برای حذف عنصر آرایه اجرا می کنیم. دستور unset با نام متغیر آرایه، “MyArray” به عنوان آرگومان ارسال می شود. “MyArray” با شاخص تنظیم شده است [2] که عنصر آرایه ای را که در این شاخص قرار می گیرد حذف می کند.
در مرحله بعد دستور echo را داریم که برای نمایش آرایه به روز شده پس از عملیات حذف استفاده می شود. MyArray[@]}”expression برای چاپ آرایه استفاده می شود که در آن نماد “@” نشان دهنده شاخص آرایه است.
اعلام -آ MyArray=( “پاندا” “جغد” “گربه” “خرگوش” “خرس” )
تنظیم نشده MyArray[2]
اکو “${MyArray[@]}“
همانطور که با استفاده از دستور unset مقدار شاخص “2” را از آرایه مشخص شده حذف می کنیم، مقداری که در داخل آرایه در اندیس “2” قرار می گیرد “Cat” است که از آرایه حذف می شود. و آرایه اصلاح شده در خروجی زیر نمایش داده می شود. توجه داشته باشید که شاخص آرایه همیشه از عدد “0” شروع می شود:
مثال 2: حذف یک عنصر آرایه خاص در اسکریپت Bash از طریق یک فهرست نسبی
اگر از شاخص هایی مانند -1، -2 و غیره استفاده کنیم، عناصر از آخرین عنصر ارجاع داده می شوند روی. بنابراین، ما همچنین می توانیم آنها را برای عناصر قبلی با استفاده از ترتیب نسبی حذف یا تغییر دهیم. بیایید اسکریپت Bash زیر را داشته باشیم، که در آن اولین گام برای اعلام یک متغیر برای یک آرایه استفاده از دستور “declare -a” در Bash است. متغیر آرایه “زبان” نام دارد. چهار زبان برنامه نویسی مختلف را به همراه شماره شاخص داخل آن قرار می دهیم. پس از آن، ما یک دستور Bash unset داریم که در آن متغیر “languages” با شاخص نسبی “-3” تنظیم می شود تا عنصر آرایه حذف شود. سپس، از “${languages[@]}” عبارت برای چاپ آرایه تازه تشکیل شده پس از استفاده از دستور echo. عنصر خاص از آرایه تنظیم نشده است.
اعلام -آ زبان ها=(
[0]=جاوا
[1]=کوتلین
[2]= پایتون
[3]=اسکالا
)
تنظیم نشده زبان ها[–3]
اکو “${زبان[@]}“
خروجی آرایه ای را نشان می دهد که در آن مقدار “Kotlin” حذف شده است زیرا شاخص “-3” جهت شاخص معکوس را نشان می دهد که شاخص “1” از ترتیب پیش فرض است. از این رو، ارجاع به موارد خاص در یک آرایه بزرگ داده شده نسبتا ساده تر است.
مثال 3: حذف یک عنصر آرایه خاص در اسکریپت Bash با استفاده از Regex
اجرای اخیر اسکریپت Bash برای حذف یک عنصر خاص از آرایه داده شده بسیار ساده است. حال، مورد دیگری داریم که عناصر یک آرایه از آرایه دیگر حذف می شوند. اسکریپت های Bash زیر هر عنصری را از آرایه که با یک regex مطابقت دارد حذف می کند. ابتدا متغیر “arr1” را که با مقداری عدد صحیح تنظیم می شود، اعلام می کنیم.
سپس، یک آرایه دیگر ایجاد می کنیم که “arr2” است و دو مقدار صحیح که در آرایه اول نیز وجود دارد، “arr1” را وارد می کنیم. پس از این، یک متغیر “نتیجه” تعریف می کنیم که عبارت “${arr1[@]}”) که نشان می دهد که متغیر نتایج دارای تمام عناصر آرایه آرایه “arr1” برای چاپ است. بعد، حلقه for را تنظیم می کنیم که روی تمام عناصر آرایه موجود در آرایه “arr2” تکرار می شود و آنها را در شی “ele” ذخیره می کنیم.
در مرحله بعد، از متغیر “result” استفاده می کنیم که با “(${result[@]/*${ele}*/})” عبارت. نتیجه[@]”expression در اینجا عناصر آرایه “arr1” را ذخیره می کند و عبارت “${ele}” دارای عناصر آرایه “arr2” است. “arr2” با آن عناصر از آرایه “arr1” مطابقت دارد و آنها را از آرایه “arr1” حذف می کند. سپس دستور echo برای نمایش عناصر باقی مانده از آرایه “arr1” مستقر می شود.
arr1=(11 22 33 44 55 66 77 88 99)
arr2=(22 77)
نتیجه=(“${arr1[@]}“)
برای ele که در “${arr2[@]}“; انجام دادن
نتیجه=(${نتیجه[@]/*${ele}*/})
انجام شده
اکو عناصر جدید Arr1 عبارتند از: ${نتیجه[@]}“
پس از تطبیق regex، خروجی عنصری را نشان می دهد که در آن عناصر “22” و “77” از “arr1” حذف شده اند.
مثال 4: حذف کل آرایه در اسکریپت Bash
از اسکریپت های Bash فوق برای حذف عناصر خاص از آرایه استفاده می شود. همچنین میتوانیم کل عناصر آرایه را با تعیین متغیر آرایه در دستور unset حذف کنیم. در اینجا، عملیات حذف را در اسکریپت Bash پیاده سازی می کنیم. مرحله اولیه اعلان آرایه است که با دستور “declare -a” انجام دادیم.
متغیر آرایه را به صورت StraArray تعریف می کنیم. سپس آیتم های رشته ای را داخل آرایه اضافه می کنیم. پس از آن، دستور unset را فراخوانی می کنیم که نام آرایه “strArray” را بدون هیچ مقدار شاخص می گیرد. این رویکرد برای حذف کل آرایه در اسکریپت Bash استفاده می شود. در پایان از دو دستور echo برای نمایش آرایه و کلیدهای آرایه استفاده می کنیم.
اعلام -آ StraArray=( “یک”“دو”“سه”“چهار”“پنج” )
تنظیم نشده StraArray
اکو ${!StrArray[@]}
اکو ${!StrArray[@]}
ما سعی می کنیم عناصر و کلیدهای اسکریپت فوق را چاپ کنیم، که هیچ خروجی برمی گرداند. از آنجایی که آرایه دیگر وجود ندارد، یک نتیجه خالی برگردانده می شود.
مثال 5: حذف یک عنصر آرایه خاص در اسکریپت Bash با رویکردی دیگر
مثال های قبلی از دستور unset برای حذف یک عنصر کامل یا خاص از یک آرایه داده شده استفاده می کنند. در آنجا، ما تکنیک دیگری برای حذف عنصر خاص آرایه بدون استفاده از دستور unset داریم. اسکریپت Bash زیر با آرایه ای که پنج کاراکتر اول را دارد تعریف می شود. آن آرایه در یک متغیر CharArray ذخیره می شود.
سپس متغیر CharArray دوباره فراخوانی می شود و با ${CharArray مشخص می شود.[@]عبارت :1” عبارت عنصری از آرایه را حذف می کند که در اولین رخداد در آرایه وجود دارد زیرا مقدار شاخص “1” به “CharArray” ارائه می شود.[@]”. پس از حذف عنصر مشخص شده از آرایه، دستور echo آرایه ای را تولید می کند که شامل تمام عناصر به جز عنصر حذف شده است.
CharArray=(“${CharArray[@]:1}“)
اکو ${CharArray[@]}
عنصر کاراکتر “a” در آرایه خروجی زیر نشان داده نمی شود زیرا از طریق “${CharArray” حذف می شود.[@]عبارت :1”
نتیجه
مقاله حذف یک عنصر خاص از یک آرایه در اسکریپت Bash به صورت مفهومی توضیح داده شده است. در اینجا از دستور unset برای حذف کل آرایه و عنصر خاص از آرایه استفاده کردیم. دستور unset نیز از طریق رویکرد شاخص های نسبی، عنصر را از آرایه حذف می کند. Regex مطابقت نیز برای حذف عنصر از آرایه داده شده است. علاوه بر این، ما Regex مطابقت را برای حذف یک عنصر خاص از یک آرایه اضافه کردیم.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-29 13:45:03