از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
آموزش توابع Bash
سرفصلهای مطلب
تابع Bash مجموعه ای از دستورات است که می تواند به طور مکرر اجرا شود. هدف این تابع این است که اسکریپتهای Bash را راحتتر خوانده و از تایپ مکرر همان اسکریپت جلوگیری کند. توابع Bash در مقایسه با اکثر زبان های برنامه نویسی به طور قابل توجهی محدود هستند. برای اجرای گام به گام، این فایل حاوی دستورات مختلفی است. اگرچه این دستورات را می توان به سادگی در خط فرمان وارد کرد، اما راحت تر است که تمام دستورات به هم پیوسته را برای یک عملیات معین در یک فایل واحد از منظر قابلیت استفاده مجدد ذخیره کرد. ما می توانیم از آن فایل برای اجرای مجموعه ای از دستورات مشخص شده، بسته به یک بار یا چند بار استفاده کنیم روی نیازهای ما ما در این درس اصول توابع Bash را بررسی خواهیم کرد و روش استفاده از آنها را در اسکریپت های پوسته نشان خواهیم داد.
مثال 1
تابع بخشی از کد است که می تواند چندین بار برای انجام وظایف خاص در برنامه نویسی فراخوانی شود. طول کد کاهش می یابد و ماژولار بودن برنامه ارائه می شود. ابتدایی ترین تصویر از کاربرد یک تابع در برنامه نویسی Bash در زیر نشان داده شده است:
BashFunction () {
اکو سلام دوستان لینوکسی من
}
BashFunction
در اسکریپت قبلی تابع را تعریف کرده ایم BashFunction. در داخل آن، ما یک عبارت اکو داریم. سپس، تابع را فراخوانی کردیم BashFunction برای اجرای تابع
خروجی تابع پایه Bash چاپ می شود روی را terminal:
سلام دوستان لینوکسی من
linuxhit@hp34:~$
مثال 2
ما می توانیم استدلال و process داده ها با توابع Bash مانند سایر زبان های برنامه نویسی. مشابه انتقال پارامترهای خط فرمان به اسکریپت Bash، میتوانیم دادهها را به تابع وارد کنیم. ما باید پارامترهایی را بلافاصله بعد از نام تابع اضافه کنیم تا هر تعداد آرگومان به تابع Bash ارائه شود. هنگام فراخوانی تابع، میتوانیم آرگومانها را مستقیماً ارسال کنیم و از مقادیر $1، $2،… $n برای دسترسی به آنها در داخل تابع استفاده کنیم.
ضرب_دو_عدد() {
محلی تولید – محصول=$((1 دلار*2 دلار))
اکو محصول 1 دلار و 2 دلار است محصول $
}
ضرب_دو_عدد 5 2
در اسکریپت قبلی، تابع را ایجاد کرده ایم ضرب_دو_عدد. در تابع، متغیر را ایجاد کرده ایم تولید – محصول و معادله محصولی که باید محاسبه شود را اختصاص داد. سپس دستور echo برای چاپ نتیجه محاسبه برای حاصل ضرب دو مقدار استفاده می شود. پس از آن، دو آرگومان 5 و 2 که به تابع اختصاص داده شده است را ارائه کرده ایم ضرب_دو_عدد.
این terminal پوسته بعد از اجرای اسکریپت در تصویر زیر نشان داده شده است:
محصول 5 و 2 است 10
linuxhit@hp34:~$
مثال 3
اکثر زبان های برنامه نویسی از ایده توابعی که یک مقدار را برمی گرداند پشتیبانی می کنند. به این معنی است که تابع باید داده ها را به مکانی که از آن فراخوانی می شود برگرداند. توابع Bash بر خلاف توابع در زبان های برنامه نویسی واقعی، هنگام فراخوانی مقداری را پشتیبانی نمی کنند. با این حال، آنها به ما این امکان را می دهند که وضعیت بازگشت را ایجاد کنیم، که مشابه وضعیت خروجی است که توسط یک برنامه یا دستور برای خاتمه استفاده می شود.
متغیر دلار؟ کلمه اختصاص داده شده است برگشت، که می تواند برای توصیف وضعیت فعلی بازده استفاده شود. تابع با دستور return خاتمه می یابد که به عنوان وضعیت خروجی تابع نیز عمل می کند.
my_function() {
برگشت 14
}
my_function
اکو مقدار بازگشتی است دلار؟
در اسکریپت ابتدا یک تابع ایجاد کرده ایم my_function. در تابع، یک کلمه کلیدی بازگشتی داریم که مقدار را می گیرد 14. سپس، تابع را فراخوانی کردیم my_function، که دارای یک عبارت echo است که مقدار را به آن برمی گرداند دلار؟.
اسکریپت Bash مقدار مشخص شده برای یک دستور بازگشتی را به صورت زیر خروجی می دهد:
مقدار بازگشتی است 14
linuxhit@hp34:~$
مثال 4
در یک اسکریپت، متغیر سراسری، متغیری است که از هر مکانی قابل دسترسی است و محدودیتی ندارد روی دامنه آن حتی اگر یک متغیر در داخل یک تابع اعلان شود، به طور خودکار به عنوان یک متغیر جهانی تعریف می شود. متغیرها همچنین می توانند به صورت محلی ایجاد شوند. هنگامی که آنها برای اولین بار تخصیص داده شدند، متغیرهای محلی را می توان در داخل بدنه تابع با استفاده از کلمه کلیدی مشخص کرد. محلی. فقط آن تابع به شما امکان دسترسی به آنها را می دهد. همین نام ممکن است به متغیرهای محلی ایجاد شده در توابع دیگر داده شود.
var1=“گربه”
نام_حیوانات_تفریح() {
محلی var2=“سگ”
var3=“گوسفند”
اکو “نام اولین حیوان است $var1“
اکو “نام حیوان دوم است $var2“
}
نام_حیوانات_تفریح
اکو “نام اولین حیوان است $var1“
اکو “نام اولین حیوان است $var2“
اکو “نام اولین حیوان است $var3“
اسکریپت Bash با اعلان متغیر سراسری شروع می شود var1 و آن را با مقدار یک رشته مقداردهی اولیه می کند. سپس، تابع را ایجاد کردیم نام_حیوانات_تفریح. به تابع نام_حیوانات_تفریح، متغیر محلی را با کلمه کلیدی local و یک متغیر سراسری تنظیم کرده ایم. متغیرهای محلی و جهانی با نام ها تعریف شده اند var2 و var3و مقادیر آنها را نیز تعیین کرده ایم. سپس، متغیر سراسری را تکرار کردیم var1 در تابع و متغیر محلی var2 در داخل تابع پس از آن تابع را فراخوانی کردیم نام_حیوانات_تفریح و به متغیرهای سراسری دسترسی پیدا کرد var1 و var3، که معمولا اجرا می شوند، اما در تلاش برای دسترسی به متغیر محلی هستیم val2 خارج از تابع مشخص شده، یک مقدار خالی برمی گرداند.
شما می توانید خروجی دسترسی به متغیرهای محلی و سراسری را در قسمت اطلاع رسانی کنید bash برنامه به شرح زیر
نام اولین حیوان است گربه
نام حیوان دوم سگ است
نام اولین حیوان است گربه
نام اولین حیوان است
نام اولین حیوان گوسفند است
linuxhit@hp34:~$
مثال 5
با نامگذاری تابعی مشابه فرمانی که میخواهیم لغو کنیم، میتوانیم دستورات Bash را لغو کنیم. به عنوان مثال، باید تابعی بنویسیم که نامیده می شود اکو اگر بخواهیم دستور echo را لغو کنیم.
این ایده لغو دستورات Bash ممکن است در برخی شرایط مفید باشد، مانند زمانی که میخواهیم از دستوری با گزینههای خاص استفاده کنیم. علاوه بر این، شرایطی وجود دارد که نمی خواهیم کل دستور را با گزینه های داخل اسکریپت تکرار کنیم. ما می توانیم از گزینه هایی برای تغییر دستور Bash داخلی در این شرایط استفاده کنیم. بیایید از یک مثال برای درک بهتر ایدهی فراخوانی دستورات در Bash Shell Scripting استفاده کنیم:
اکو () {
ساخته شده اکو -n `تاریخ +“[%m-%d %H:%M:%S]”` “:”
ساخته شده اکو 1 دلار
}
اکو “به وبلاگ های من خوش آمدید.”
در اسکریپت قبلی Bash، یک تابع echo داریم. در تابع echo، ما دستور echo را لغو کردیم و متد timestamp داخلی را به عنوان آرگومان برای فرمان echo درج کردیم.
خروجی تابع لغو Bash در تصویر زیر نمایش داده می شود:
[12-06 15:54:50] : به وبلاگ های من خوش آمدید.
linuxhit@hp34:~$
نتیجه
ما در مورد تابع Bash بحث کردیم روی این موضوع. تکه ای از کد قابل استفاده مجدد که به صراحت برای یک کار مشخص ایجاد شده است، تابع Bash نامیده می شود. پس از تعریف، می توان آن را چندین بار در یک اسکریپت استفاده کرد. Bash با سیستم عامل درگیر می شود تا دستورات دریافتی از پوسته را پس از خواندن آنها انجام دهد. یکی از ویژگیهای فوقالعاده Bash این است که به شما اجازه میدهد تا بسیاری از دستورات و عملکردهای آن را در یک اسکریپت اجرایی واحد ترکیب کنید، که سازماندهی کارتان را آسانتر میکند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-29 22:23:04