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

سرور مجازی NVMe

روش ایجاد و استفاده از توابع Bash

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


تابع بخشی مفید از هر زبان برنامه نویسی برای تعریف بلوک کد است که می تواند در انواع مختلف با فراخوانی تابع استفاده شود. اعلان تابع و استفاده از آرگومان های تابع در تابع Bash مشابه سایر زبان های برنامه نویسی نیست. استفاده از کلمه کلیدی تابع برای تعریف توابع در Bash الزامی نیست. معمولاً از متغیرهای $1، $2، $3…$n برای خواندن آرگومان‌های تابع در Bash استفاده می‌شود. براکت های “()” نیز برای فراخوانی یک تابع در Bash ضروری نیستند. روش های ایجاد و استفاده از توابع Bash تعریف شده توسط کاربر در این آموزش با استفاده از چندین مثال نشان داده شده است.

انواع مختلف آرگومان های تابع Bash

اهداف انواع مختلف آرگومان های تابع Bash به شرح زیر توضیح داده شده است:

استدلال تابع هدف
$0 این شامل نام اسکریپت با مکان است.
$# این تعداد کل آرگومان ها را می شمارد.
$@ یا $* حاوی لیست آرگومان موقعیتی است.
“$@” یک رشته جداگانه از لیست استخراج می کند.
“$*” لیست را به عنوان یک رشته استخراج می کند.
$1، $2، …$n این متغیرها برای خواندن آرگومان هایی که پس از نام توابع ارسال می شوند استفاده می شوند.

فهرست مطالب:

  1. تعریف و فراخوانی یک تابع
  2. یک تابع را با متغیر جهانی تعریف کنید
  3. تعریف یک تابع با Local متغیر
  4. یک تابع را با آرگومان تعریف کنید
  5. تابعی را تعریف کنید که یک مقدار واحد را برمی گرداند
  6. تابعی را تعریف کنید که چندین مقدار را برمی گرداند
  7. یک تابع برای لغو فرمان تعریف کنید
  8. یک تابع برای خواندن از یک فایل تعریف کنید
  9. یک تابع برای نوشتن در یک فایل تعریف کنید
  10. یک تابع برای خواندن آرگومان مرجع تعریف کنید

تعریف و فراخوانی یک تابع

روش اعلام یک تابع ساده و فراخوانی تابع در اسکریپت Bash در اسکریپت زیر نشان داده شده است. این تابع هنگام فراخوانی یک پیام ساده را چاپ می کند.

#!/bin/bash

#راه اعلان و فراخوانی تابع bash
#در این فیلمنامه نشان داده شده است

#یک تابع ساده را تعریف کنید
تابع testFunc
{

اکو “این یک تابع آزمایشی است.”
}

# تابع را فراخوانی کنید

testFunc

خروجی:

خروجی زیر پس از اجرای اسکریپت قبلی ظاهر می شود. پس از فراخوانی تابع، پیام “این یک تابع تست است” چاپ می شود:

روش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع را با متغیر جهانی تعریف کنید

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

#!/bin/bash

#از کاربر ورودی بگیرید
خواندن “نام کوچک را وارد کنید:” نام کوچک
خواندن “نام خانوادگی را وارد کنید:” نام خانوادگی

#یک تابع ساده را تعریف کنید

concat_str
{

#بررسی کنید که آیا متغیرهای سراسری خالی هستند یا خیر

اگر [[ ! -z $firstname && ! -z $lastname ]]

سپس

اکو “نام و نام خانوادگی: $firstname نام خانوادگی $

دیگر

اکو “نام یا نام خانوادگی خالی است.”

فی

}

# تابع را فراخوانی کنید

concat_str

خروجی:

خروجی زیر پس از اجرای اسکریپت برای مقادیر ورودی “Nila” و “Rahman” ظاهر می شود:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

تعریف یک تابع با Local متغیر

متغیرهایی که در داخل تابع استفاده می شوند، متغیرهای محلی نامیده می شوند. در اسکریپت زیر از متغیرهای سراسری و محلی استفاده شده است. تابع اسکریپت متوجه می شود که آیا مقدار متغیر سراسری بر 5 بخش پذیر است یا خیر. در اینجا، “$number” متغیر سراسری و “$remainder” متغیر محلی است.

#!/bin/bash

#متغیر سراسری را تعریف کنید
عدد=65

#یک تابع را تعریف کنید
تابع محاسبه
{

#متغیر محلی را تعریف کنید

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

محلی باقی مانده=$(($شماره%5))

#بررسی کنید که آیا عدد بر 5 بخش پذیر است یا خیر

اگر [ $remainder == 0 ]

سپس

اکو $شماره بر 5 بخش پذیر است.”

دیگر

اکو $شماره بر 5 بخش پذیر نیست.”

فی
}

# تابع را فراخوانی کنید

محاسبه

خروجی:

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. در اینجا، مقدار “$number” 65 بود که بر 5 بخش پذیر است:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع را با آرگومان تعریف کنید

آرگومان های متعدد با جداسازی آرگومان ها با فاصله بعد از نام تابع در Bash به تابع منتقل می شوند. متغیرهای $1، $2، $3 و غیره برای خواندن متوالی مقادیر آرگومان استفاده می شوند. در زمان فراخوانی تابع برای اولین بار، چهار عدد به عنوان مقادیر آرگومان ارسال می شود. در زمان فراخوانی تابع برای بار دوم، چهار متغیر به عنوان مقادیر آرگومان ارسال می شود. تابع مجموع تمام مقادیر آرگومان را برمی گرداند.

#!/bin/bash

علاوه بر این()
{

#مقادیر آرگومان را بخوانید

n1=1 دلار

n2=2 دلار

n3=3 دلار

n4=4 دلار

#مجموع آرگومان ها را محاسبه کنید

((مجموع=n1 دلار+n2 دلار+n3 دلار+n4 دلار))

#نتیجه محاسبه شده را چاپ کنید

اکو “مجموع n1 دلار، n2 دلار، n3 دلار، و n4 دلار است $ مجموع
}

# تابع را با 4 آرگومان عددی فراخوانی کنید

علاوه بر این 10 30 20 40

#چهار عدد از کاربر بگیرید
خواندن “4 عدد را وارد کنید:” num1 num2 num3 num4
#چهار متغیر را بررسی کنید
اگر [[ ! -z $num1 && ! -z $num2 && ! -z $num3 && ! -z $num4 ]]
سپس

علاوه بر این $num1 $num2 $num3 $num4
دیگر

اکو چهار عدد گرفته نشده است.
فی

خروجی:

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. مجموع 10، 30، 20 و 40 برابر با 100 و مجموع 6، 9، 5 و 3 برابر با 23 است. مقادیر صحیح در خروجی چاپ می شوند:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

تابعی را تعریف کنید که یک مقدار واحد را برمی گرداند

تابع Bash می تواند یک مقدار و چند مقدار را برگرداند. دستور “return” برای برگرداندن یک مقدار عددی از تابع Bash استفاده می شود. دستور “echo” برای برگرداندن یک یا چند مقدار از تابع به تماس گیرنده تابع استفاده می شود. در اسکریپت زیر از تابع برای برگرداندن حاصل ضرب دو عددی که از کاربر گرفته شده است استفاده می شود. “$؟” برای خواندن مقدار برگشتی تابع استفاده می شود.

#!/bin/bash

#دو عدد از کاربر بگیرید
خواندن “اولین عدد را وارد کنید:” n1
خواندن “عدد دوم را وارد کنید:” n2

#یک تابع برای محاسبه ضرب دو عدد تعریف کنید

ضرب_عدد ()
{

#دو عدد را ضرب کن

((نتیجه=n1*n2))

#نتیجه ضرب را برگردانید

برگشت $نتیجه
}

# تابع را فراخوانی کنید

ضرب_عدد
#مقدار برگشتی را چاپ کنید
اکو «تکثیر n1 دلار و n2 دلار دلار است؟”

خروجی:

خروجی زیر پس از اجرای اسکریپت برای ورودی 5 و 3 ظاهر می شود. حاصل ضرب 5 و 3 15 است:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

تابعی را تعریف کنید که چندین مقدار را برمی گرداند

در اسکریپت زیر از دستور “echo” در تابع برای برگرداندن یک آرایه به فراخوان دهنده تابع استفاده می شود. یک مقدار ورودی عددی به عنوان آرگومان به تابع ارسال می شود. یک حلقه برای گرفتن ورودی از کاربر و ذخیره آن در یک آرایه تکرار می شود روی مقدار آرگومان تابع سپس، این آرایه به فراخوان دهنده تابع برگردانده می شود. دستور “خواندن” برای ذخیره مقدار برگشتی در آرایه ای که بعدا چاپ می شود استفاده می شود.

#!/bin/bash
#یک تابع برای برگرداندن چندین مقدار تعریف کنید

بازگشت_مقدار_چندین ()
{

#اعلان آرایه

اعلام دانش آموزان
#حلقه را برای درج مقادیر در آرایه تکرار کنید

برای (( من=0; من<1 دلار; i++ ))

انجام دادن

خواندن “نام دانش آموز را وارد کنید:” نام
دانش آموزان[$i]=$name

انجام شده

#آرایه را به تماس گیرنده برگردانید

اکو ${دانشجویان[@]}
}

#تعداد دانش آموزان را از کاربران بگیرید
خواندن “تعداد دانش آموزان را وارد کنید:” std

#با یک آرگومان تابع را فراخوانی کنید
بازگشت_آرایه=$(بازگشت_مقدار_چندین $std)
#مقدار برگشتی را در یک آرایه ذخیره کنید
خواندن std_arr <<< $return_array

#مقادیر آرایه را چاپ کنید
اکو “مقادیر آرایه عبارتند از:”
برای val که در ${std_arr[@]}
انجام دادن

اکو $val
انجام شده

خروجی:

خروجی زیر پس از اجرای اسکریپت ظاهر می شود. با توجه به خروجی، مقادیر رشته “Meena”، “Jafar” و “Sultana” از کاربر گرفته شده و در آرایه “$students” ذخیره می شود. این آرایه بعداً از تابع برگردانده می شود:

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

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع برای لغو فرمان تعریف کنید

Bash دستورات داخلی زیادی برای اهداف مختلف دارد. وظیفه هر دستوری را می توان با نوشتن یک تابع Bash با نام دستور لغو کرد. سپس اسکریپت تابع overrid شده را به جای دستور اصلی اجرا می کند. در اسکریپت زیر تابع overrid شده برای دستور printf نوشته شده است. در اینجا تابع “pritnf” با دو آرگومان فراخوانی می شود که با استفاده از دستورات “printf” و “echo” در داخل تابع چاپ می شوند.

#!/bin/bash

خروجی را با استفاده از دستور “printf” داخلی چاپ کنید
printf “%s\n “برنامه نویسی Bash را یاد بگیرید.”

printf ()
{

#آگومان اول را با استفاده از “printf” چاپ کنید

ساخته شده printf “%s\n 1 دلار

آرگومان دوم را با استفاده از ‘echo’ چاپ کنید

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

# تابع overrid شده را با دو آرگومان فراخوانی کنید
printf “آموزش bash از LinuxHint” “برنامه نویسی پوسته”

خروجی:

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

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع برای خواندن از یک فایل تعریف کنید

روش خواندن یک فایل با استفاده از تابع Bash در اسکریپت زیر نشان داده شده است. نام فایل از کاربر گرفته می شود. در صورت وجود فایل، پس از فراخوانی تابع، محتوای فایل با استفاده از حلقه “while” خوانده می شود.

#!/bin/bash

#نام فایل را بگیرید
خواندن “نام فایل را وارد کنید:” نام فایل

#یک تابع برای خواندن محتوای فایل تعریف کنید
تابع read_text_file() {

در حالی که خواندن داده ها؛
انجام دادن

اکو داده $

انجام شده
} < $filename

اکو “محتوای فایل در زیر آورده شده است:”
# تابع را فراخوانی کنید

read_text_file

خروجی:

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “test.txt” ظاهر می شود. محتوای این فایل با اجرای اسکریپت چاپ می شود. سپس از دستور “cat” برای بررسی محتوای اصلی فایل که همان خروجی اسکریپت است استفاده می شود:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع برای نوشتن در یک فایل تعریف کنید

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

#!/bin/bash

#نام فایل را بگیرید
خواندن “نام فایل را برای ایجاد وارد کنید:” نام فایل

تابع write_into_file()
{

اکو “این خط اول است.”

اکو “این خط دوم است.”

اکو “این خط سوم است.”

} > $filename

#برای نوشتن در فایل، تابع را فراخوانی کنید

write_into_file
اکو “فایل با موفقیت ایجاد شد.”

خروجی:

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “test_file.txt” ظاهر می شود. دستور “cat” بعداً برای بررسی محتوای فایل استفاده می شود:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

یک تابع برای خواندن آرگومان مرجع تعریف کنید

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

#!/bin/bash

#یک تابع برای استفاده از متغیر مرجع تعریف کنید
تابع use_of_reference_var()
{

#برهان اول را بخوانید

سال=1 دلار

#بررسی کنید که آیا سال کبیسه است یا خیر

اگر [ `expr $year % 4` -eq 0 ]

سپس

خ=سال دلار سال کبیسه است”

دیگر

خ=سال دلار سال کبیسه نیست”

فی
}

#یک سال ارزش از کاربر بگیرید
خواندن “مقدار سال را وارد کنید:” سال
# تابع را با یک آرگومان معمولی و یک آرگومان مرجع فراخوانی کنید

use_of_reference_var سال دلار خ
#مقدار متغیر مرجع را چاپ کنید
اکو $str

خروجی:

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی 1402 که یک سال کبیسه نیست ظاهر می شود:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی 2008 که یک سال کبیسه است ظاهر می شود:

روش ایجاد و استفاده از توابع Bashروش ایجاد و استفاده از توابع Bash

برو به بالا

نتیجه

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

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

زمان انتشار: 1402-12-28 17:02:02

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

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

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