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

سرور مجازی NVMe

آموزش توابع Bash

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


تابع Bash مجموعه ای از دستورات است که می تواند به طور مکرر اجرا شود. هدف این تابع این است که اسکریپت‌های Bash را راحت‌تر خوانده و از تایپ مکرر همان اسکریپت جلوگیری کند. توابع Bash در مقایسه با اکثر زبان های برنامه نویسی به طور قابل توجهی محدود هستند. برای اجرای گام به گام، این فایل حاوی دستورات مختلفی است. اگرچه این دستورات را می توان به سادگی در خط فرمان وارد کرد، اما راحت تر است که تمام دستورات به هم پیوسته را برای یک عملیات معین در یک فایل واحد از منظر قابلیت استفاده مجدد ذخیره کرد. ما می توانیم از آن فایل برای اجرای مجموعه ای از دستورات مشخص شده، بسته به یک بار یا چند بار استفاده کنیم روی نیازهای ما ما در این درس اصول توابع Bash را بررسی خواهیم کرد و روش استفاده از آنها را در اسکریپت های پوسته نشان خواهیم داد.

مثال 1

تابع بخشی از کد است که می تواند چندین بار برای انجام وظایف خاص در برنامه نویسی فراخوانی شود. طول کد کاهش می یابد و ماژولار بودن برنامه ارائه می شود. ابتدایی ترین تصویر از کاربرد یک تابع در برنامه نویسی Bash در زیر نشان داده شده است:

#!/صندوقچه/bash

BashFunction () {

اکو سلام دوستان لینوکسی من
}

BashFunction

در اسکریپت قبلی تابع را تعریف کرده ایم BashFunction. در داخل آن، ما یک عبارت اکو داریم. سپس، تابع را فراخوانی کردیم BashFunction برای اجرای تابع

خروجی تابع پایه Bash چاپ می شود روی را terminal:

linuxhit@hp34:~$ chmod +x test.sh; ./test.sh
سلام دوستان لینوکسی من
linuxhit@hp34:~$

مثال 2

ما می توانیم استدلال و process داده ها با توابع Bash مانند سایر زبان های برنامه نویسی. مشابه انتقال پارامترهای خط فرمان به اسکریپت Bash، می‌توانیم داده‌ها را به تابع وارد کنیم. ما باید پارامترهایی را بلافاصله بعد از نام تابع اضافه کنیم تا هر تعداد آرگومان به تابع Bash ارائه شود. هنگام فراخوانی تابع، می‌توانیم آرگومان‌ها را مستقیماً ارسال کنیم و از مقادیر $1، $2،… $n برای دسترسی به آنها در داخل تابع استفاده کنیم.

#!/صندوقچه/bash

ضرب_دو_عدد() {

محلی تولید – محصول=$((1 دلار*2 دلار))

اکو محصول 1 دلار و 2 دلار است محصول $
}

ضرب_دو_عدد 5 2

در اسکریپت قبلی، تابع را ایجاد کرده ایم ضرب_دو_عدد. در تابع، متغیر را ایجاد کرده ایم تولید – محصول و معادله محصولی که باید محاسبه شود را اختصاص داد. سپس دستور echo برای چاپ نتیجه محاسبه برای حاصل ضرب دو مقدار استفاده می شود. پس از آن، دو آرگومان 5 و 2 که به تابع اختصاص داده شده است را ارائه کرده ایم ضرب_دو_عدد.

این terminal پوسته بعد از اجرای اسکریپت در تصویر زیر نشان داده شده است:

linuxhit@hp34:~$ chmod +x test.sh; ./test.sh
محصول 5 و 2 است 10
linuxhit@hp34:~$

مثال 3

اکثر زبان های برنامه نویسی از ایده توابعی که یک مقدار را برمی گرداند پشتیبانی می کنند. به این معنی است که تابع باید داده ها را به مکانی که از آن فراخوانی می شود برگرداند. توابع Bash بر خلاف توابع در زبان های برنامه نویسی واقعی، هنگام فراخوانی مقداری را پشتیبانی نمی کنند. با این حال، آنها به ما این امکان را می دهند که وضعیت بازگشت را ایجاد کنیم، که مشابه وضعیت خروجی است که توسط یک برنامه یا دستور برای خاتمه استفاده می شود.

پیشنهاد می‌کنیم بخوانید:  روش خواندن داده های ستونی از یک فایل متنی در اسکریپت Bash Shell

متغیر دلار؟ کلمه اختصاص داده شده است برگشت، که می تواند برای توصیف وضعیت فعلی بازده استفاده شود. تابع با دستور return خاتمه می یابد که به عنوان وضعیت خروجی تابع نیز عمل می کند.

#!/صندوقچه/bash

my_function() {

برگشت 14
}

my_function

اکو مقدار بازگشتی است دلار؟

در اسکریپت ابتدا یک تابع ایجاد کرده ایم my_function. در تابع، یک کلمه کلیدی بازگشتی داریم که مقدار را می گیرد 14. سپس، تابع را فراخوانی کردیم my_function، که دارای یک عبارت echo است که مقدار را به آن برمی گرداند دلار؟.

اسکریپت Bash مقدار مشخص شده برای یک دستور بازگشتی را به صورت زیر خروجی می دهد:

linuxhit@hp34:~$ chmod +x test.sh; ./test.sh
مقدار بازگشتی است 14
linuxhit@hp34:~$

مثال 4

در یک اسکریپت، متغیر سراسری، متغیری است که از هر مکانی قابل دسترسی است و محدودیتی ندارد روی دامنه آن حتی اگر یک متغیر در داخل یک تابع اعلان شود، به طور خودکار به عنوان یک متغیر جهانی تعریف می شود. متغیرها همچنین می توانند به صورت محلی ایجاد شوند. هنگامی که آنها برای اولین بار تخصیص داده شدند، متغیرهای محلی را می توان در داخل بدنه تابع با استفاده از کلمه کلیدی مشخص کرد. محلی. فقط آن تابع به شما امکان دسترسی به آنها را می دهد. همین نام ممکن است به متغیرهای محلی ایجاد شده در توابع دیگر داده شود.

#!/صندوقچه/bash

var1=“گربه”

نام_حیوانات_تفریح() {

محلی var2=“سگ”

var3=“گوسفند”

اکو “نام اولین حیوان است $var1

اکو “نام حیوان دوم است $var2
}

نام_حیوانات_تفریح

اکو “نام اولین حیوان است $var1
اکو “نام اولین حیوان است $var2
اکو “نام اولین حیوان است $var3

اسکریپت Bash با اعلان متغیر سراسری شروع می شود var1 و آن را با مقدار یک رشته مقداردهی اولیه می کند. سپس، تابع را ایجاد کردیم نام_حیوانات_تفریح. به تابع نام_حیوانات_تفریح، متغیر محلی را با کلمه کلیدی local و یک متغیر سراسری تنظیم کرده ایم. متغیرهای محلی و جهانی با نام ها تعریف شده اند var2 و var3و مقادیر آنها را نیز تعیین کرده ایم. سپس، متغیر سراسری را تکرار کردیم var1 در تابع و متغیر محلی var2 در داخل تابع پس از آن تابع را فراخوانی کردیم نام_حیوانات_تفریح و به متغیرهای سراسری دسترسی پیدا کرد var1 و var3، که معمولا اجرا می شوند، اما در تلاش برای دسترسی به متغیر محلی هستیم val2 خارج از تابع مشخص شده، یک مقدار خالی برمی گرداند.

پیشنهاد می‌کنیم بخوانید:  فرمان خواب Bash

شما می توانید خروجی دسترسی به متغیرهای محلی و سراسری را در قسمت اطلاع رسانی کنید bash برنامه به شرح زیر

linuxhit@hp34:~$ chmod +x test.sh; ./test.sh
نام اولین حیوان است گربه

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

نام اولین حیوان است
نام اولین حیوان گوسفند است
linuxhit@hp34:~$

مثال 5

با نامگذاری تابعی مشابه فرمانی که می‌خواهیم لغو کنیم، می‌توانیم دستورات Bash را لغو کنیم. به عنوان مثال، باید تابعی بنویسیم که نامیده می شود اکو اگر بخواهیم دستور echo را لغو کنیم.

این ایده لغو دستورات Bash ممکن است در برخی شرایط مفید باشد، مانند زمانی که می‌خواهیم از دستوری با گزینه‌های خاص استفاده کنیم. علاوه بر این، شرایطی وجود دارد که نمی خواهیم کل دستور را با گزینه های داخل اسکریپت تکرار کنیم. ما می توانیم از گزینه هایی برای تغییر دستور Bash داخلی در این شرایط استفاده کنیم. بیایید از یک مثال برای درک بهتر ایده‌ی فراخوانی دستورات در Bash Shell Scripting استفاده کنیم:

#!/صندوقچه/bash

اکو () {

ساخته شده اکو -n `تاریخ +“[%m-%d %H:%M:%S]”` “:”

ساخته شده اکو 1 دلار
}

اکو “به وبلاگ های من خوش آمدید.”

در اسکریپت قبلی Bash، یک تابع echo داریم. در تابع echo، ما دستور echo را لغو کردیم و متد timestamp داخلی را به عنوان آرگومان برای فرمان echo درج کردیم.

خروجی تابع لغو Bash در تصویر زیر نمایش داده می شود:

linuxhit@hp34:~$ chmod +x test.sh; ./test.sh
[12-06 15:54:50] : به وبلاگ های من خوش آمدید.
linuxhit@hp34:~$

نتیجه

ما در مورد تابع Bash بحث کردیم روی این موضوع. تکه ای از کد قابل استفاده مجدد که به صراحت برای یک کار مشخص ایجاد شده است، تابع Bash نامیده می شود. پس از تعریف، می توان آن را چندین بار در یک اسکریپت استفاده کرد. Bash با سیستم عامل درگیر می شود تا دستورات دریافتی از پوسته را پس از خواندن آنها انجام دهد. یکی از ویژگی‌های فوق‌العاده Bash این است که به شما اجازه می‌دهد تا بسیاری از دستورات و عملکردهای آن را در یک اسکریپت اجرایی واحد ترکیب کنید، که سازماندهی کارتان را آسان‌تر می‌کند.

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

زمان انتشار: 1402-12-29 22:23:04

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

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

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