یک راهنمای سریع در مورد نحوه ایجاد و فراخوانی توابع در Bash.
یک تابع مجموعه ای از کد قابل استفاده مجدد است که برای انجام برخی اقدامات استفاده می شود. با استفاده از توابع ، مدولار بودن بهتر و درجه بالایی از استفاده مجدد از کد به دست می آید.
Bash برخی از توابع داخلی مانند echo
را فراهم می کند و read
، اما ما همچنین می توانیم توابع خود را ایجاد کنیم.
دو روش وجود دارد که می توانیم توابع را در Bash ایجاد کنیم:
یک راه این است که فقط از نام تابع استفاده کنید ، به عنوان مثال:
functionName(){ // scope of function }
نسخه جمع و جور:
functionName(){ echo 'hello'; }
روش دیگر اعلام عملکرد با استفاده از function
است کلمه کلیدی:
function functionName { // scope of function }
نسخه جمع و جور:
function functionName { echo 'hello'; }
توجه کنید که چگونه به ()
نیاز نداریم هنگام استفاده از function
کلمه کلیدی برای ایجاد یک تابع.
نکات مهمی که باید در مورد توابع Bash ذکر کنید:
{}
بدنه و دامنه عملکرد است;
|مثال:
کد زیر تابعی را ایجاد می کند که 'Hello World' را روی کنسول چاپ می کند. نام تابع فراخوانی می شود چاپ سلام :
#!/bin/bash printHello(){
echo 'Hello World!' }
چگونه تابع فوق را فراخوانی می کنیم؟ تمام کاری که شما باید در اسکریپت bash خود انجام دهید نوشتن نام عملکرد است و فراخوانی می شود.
مثلا:
#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello
خروجی:
'Hello World'
عملکرد فوق printHello()
هیچ پارامتری ندارد هر زمان که ما آن را صدا کنیم ، خروجی 'Hello World' را دریافت می کنیم. اما اگر بخواهیم عملکرد عمومی تری ایجاد کنیم چه می کنیم؟ به عنوان مثال می توانیم تابع را با چند استدلال فراخوانی کنیم و آنچه را که برای آن ارسال می کنیم چاپ می کند.
دو راه برای انجام این کار وجود دارد.
ابتدا می توانیم printHello()
را اصلاح کنیم تابع برای چاپ آرگومان هایی که به آن منتقل می شود:
مثلا:
#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!
خروجی:
Hello World Hello DevQA Hello I
توجه داشته باشید که چگونه بیانیه چاپ سوم printAny I love coding!
فقط 'سلام ، من' را تولید کرد.
دلیل این امر این است که عملکرد ما فقط برای گرفتن 1 پارامتر طراحی شده است $1
. کلمه 'من کد نویسی را دوست دارم!' در واقع 3 پارامتر است.
اگر می خواستیم آن را چاپ کنیم ، باید متن را نقل قول کنیم
مثلا:
#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'
خروجی:
Hello I love coding
مثال دیگر ، ما می توانیم به رقم نیز وارد کنیم:
#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2
خروجی:
Result is: 3
توابع Bash همچنین می توانند مقادیر را برگردانند.
مثلا:
#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result
خروجی:
The sum is: 3
روش دیگر برای بازگرداندن مقادیر از یک تابع ، اختصاص نتیجه به یک متغیر است که می تواند در هر زمان لازم استفاده شود.
مثلا:
#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result
خروجی:
The sum is: 3