از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه یک تابع Bash ایجاد کنیم که یک آرایه را برمی گرداند
سرفصلهای مطلب
دلایل زیادی وجود دارد که ممکن است کسی بخواهد یک آرایه BASH را بازیابی کند:
- مدیریت طول عمر آرایه ها ساده تر است زیرا آنها به صورت محلی تخصیص داده می شوند.
- برای دستیابی به موقع، به دست آوردن آرایه ها از روش ها ممکن است کمک کند.
- برای پشتیبانی از تکنیکهای الگوریتم لاگ، نام روشهایی که آرایهها را برمیگردانند ممکن است حذف شود.
ممکن است باور داشته باشید که Bash قابلیت بازگرداندن آرایه های تابع را از دست می دهد. با این حال، این دقیقاً صحیح نیست. می توان آرایه حاصل را با استفاده از ارجاع به یک متد منتقل کرد و از توسعه دهندگان C/C++ استفاده کرد. چنین استراتژی به روش اجازه می دهد تا همچنان عاری از ارجاع به یک متغیر جهانی باشد. مقاله زیر مصادیق واضحی از این مورد را نشان می دهد.
مثال 1: برگرداندن یک آرایه
وارد سیستم لینوکس خود شوید و دستور را باز کنید terminal برای ادامه. ما یک فایل Bash با نام “script.sh” با استفاده از دست زدن به دستور برگرداندن آرایه با استفاده از تابع Bash. فیلمنامه به شرح زیر است:
می توانید فایل جدید ایجاد شده را در قسمت مشاهده کنید صفحه اصلی فهرست راهنما. این فایل را باز کنید و کد ضمیمه شده را همانطور که هست در آن یادداشت کنید. در اینجا، ما سعی می کنیم یک آرایه انجمنی را از طریق یک آرگومان در یک متد از هر یک از یک لیست پاس ایجاد کنیم.
در ابتدا، ما تابع را ایجاد کرده ایم فو ().
در داخل این برنامه، عبارت «اعلان» را حذف کردهایم که یک دستور از پیش پیکربندی شده Bash است که به ما امکان میدهد ویژگیها، روشهای پوسته آغشته به متغیرها را تغییر یا سفارشیسازی کنیم و مقادیر این ویژگیها را در داخل نشان دهیم. دامنه فرمان پوسته ما terminal. علاوه بر این، می توان از آن برای تعریف یک متغیر طولانی استفاده کرد. در نهایت برای تعریف متغیرها استفاده می شود.
ما مقدار “fooval” را به آرایه “arr” اضافه کرده ایم.
کلمه کلیدی “–A” برای ایجاد استفاده می شود NAMEs آرایه انجمنی در صورت پشتیبانی ما باید از لیست/آرایه به عنوان یک متغیر سراسری استفاده کنیم، که به این معنی است که فقط یک متد، نه یک اسکریپت، می تواند این عمل را انجام دهد.
همچنین آرایه دیگری به نام myarr برای استفاده به عنوان مرجع ایجاد کرده ایم. Bash اجازه می دهد تا نام یک متغیر نسبی arr با نام متغیر نسبی myarr متفاوت باشد.
پس از آن، در خط هشتم، آرایه “myarr” را به Bash منتقل کرده ایم فو () به عنوان یک مرجع عمل کند.
در گذشته از حلقه for استفاده می کردیم print هر دو آرایه “arr” و “myarr” به the فو () تابع.
اکنون نتیجه این کد را بررسی می کنیم. برای اجرای کد بالا دستور Bash را اجرا کنید. می بینید که آرایه به تابع برگردانده شده و سپس چاپ شده است.
مثال 2: برگرداندن یک آرایه دیگر
اجازه دهید به مثال دیگری از برگرداندن آرایه ها به یک تابع نگاه کنیم. فرمان خود را باز کنید terminal و یک فایل جدید با نام “openvpn.log” با استفاده از دست زدن به دستور، به شرح زیر:
حالا فایل “openvpn.log” را باز کنید و متن زیر را مانند تصویر در این فایل بنویسید. این فایل را ذخیره کرده و ببندید.
مجدداً پوسته فرمان را باز کنید و با استفاده از آن فایل دیگری به نام script.sh ایجاد کنید دست زدن به دستور اضافه کردن اسکریپت Bash به فایل.
سپس فایل script.sh را باز کنید و کد زیر را همانطور که هست به این فایل اضافه کنید. این فایل را ذخیره و ببندید. این اسکریپت از روشی استفاده میکند که مقادیر/رشتهها را از یک سند میخواند و یک آرایه را برمیگرداند:
- اعلان آرایه: مشتریان
- آرایه برگشتی متد را به مشتریان آرایه اختصاص دهید
- نمایش آرایه: مشتریان
اکنون اجازه دهید نگاهی دقیق به عملکرد این اسکریپت داشته باشیم.
- ما یک آرایه جهانی از “مشتریان” را با استفاده از کلمه کلیدی “اعلان” و به دنبال آن “-A” اعلام کرده ایم.
- ReadArray() تابع تعریف شده است. در این تابع چند متغیر محلی را اعلام کرده ایم. متغیر محلی “آرایه” خالی است، اما “i” و “j” با مقدار 0 برای استفاده به عنوان تکرار کننده تعریف شده اند.
- با استفاده از حالت خواندن، متن را از فایل با استفاده از تکرارکننده ها برای افزایش ایندکس ها می خوانیم.
- خط «مشتریان[$((i++))]+=${LINE};” برای الحاق خطوط متن به متغیر آرایه مشتریان تعریف شده جهانی استفاده می شود.
- پس از آن، “j++” در حال پرش است روی شاخص بعدی
- متغیر “$1” برای ذخیره و برگرداندن آرایه ای که به تازگی از فایل متنی “openvpn.log” ایجاد شده است استفاده می شود.
- در قسمت بیرونی تابع، رشته به عنوان “$string” اعلام شده است و یک مسیر فایل به عنوان مقدار داده شده است.
- این رشته به خواندن آرایه به عنوان مرجعی برای خواندن متن از این فایل عمل کنید.
- پس از آن، آرایه “مشتریان” چاپ شده است و کل متن درون آن در یک خط نمایش داده می شود.
- اکنون پیغامی مبنی بر خالی نبودن آرایه نمایش داده می شود.
- حلقه “for” برای تبدیل محتویات آرایه “مشتریان” به نوع آرایه و اعلام شاخصی برای محتویات با استفاده از عبارت “استفاده شده است.echo «$i: ${مشتریان[$i]}.”
- در نهایت، ما یک پیام نمایش دادیم و برخی از مقادیر آرایه تبدیل شده را به صورت جداگانه به عنوان یک موقعیت نمایه شده واحد از یک آرایه چاپ کردیم.
اجازه دهید اکنون خروجی این اسکریپت Bash را بررسی کنیم. دستور Bash را برای اجرای فایل “script.sh” اجرا کنید. همانطور که می بینید، اولین echo بیانیه اراده print تمام متن فایل “openvpn.log” که در آرایه “مشتریان” به عنوان یک خط ذخیره شده است. دومین echo بیانیه پیام رشته را نمایش می دهد. سومین echo بیانیه آرایه “مشتریان” را به شکل نمایه شده نمایش می دهد، زیرا به تازگی تبدیل شده است. مورد چهارم دوباره یک پیام نمایش می دهد. آخرین مورد، محتویات آرایه “مشتریان” را به صورت جداگانه نمایش می دهد.
نتیجه
این مقاله به شما نشان داد که چگونه با دو مثال، آرایهها (مخصوصاً آرایههای انجمنی) را با استفاده از دستور داخلی «اعلان» به یک تابع برگردانید. امیدوارم این مقاله به شما برای درک بهتر این موضوع کمک کرده باشد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 04:00:06