## 🛠️ درک و نوشتن توابع در اسکریپت Shell – بخش VI
### 🔍 توابع چه هستند و چرا استفاده میکنیم؟
* **تابع** قطعهای از کد است که کار خاصی را انجام میدهد و میتوان آن را فراخوانی کرد تا بارها مورد استفاده قرار گیرد. توابع به بازاستفاده کد، خوانایی بهتر و تقسیمبندی برنامه کمک میکنند ([tecmint.com][1]).
* اگر بخشهایی از کد مانند محاسبه فاکتوریل، در جاهای مختلف لازم باشد، تابعنویسی به جای کپی/پیست کردن، گزینهی هوشمندانهتری است.
---
### ✨ ساختار تعریف تابع در Bash
دو روش معمول برای نوشتن تابع:
```bash
function func_name {
commands...
}
```
یا
```bash
func_name () {
commands...
}
```
مثال ساده:
```bash
#!/bin/bash
call_echo() {
echo "This is inside function"
}
op=$1
if [ $# -ne 1 ]; then
echo "Usage: $0 <1/0>"
elif [ "$1" = "1" ]; then
call_echo
else
echo "This is outside function"
fi
exit 0
```
🔹 توجه: تابع باید قبل از اولین **فراخوانی** تعریف شود ([tecmint.com][1]).
---
### 📌 نکات مهم درباره توابع
* امکان **تودرتو بودن تابعها** وجود دارد.
* اگر تابع چندبار تعریف شود، نسخهی **آخر اجرا میشود** .
---
### 🎯 پارامترها و بازگشت مقدار
#### پارامتر ورودی:
برای ارسال آرگومان به تابع:
```bash
func_name $arg1 $arg2
```
داخل تابع با `$1`, `$2` و … قابل دسترسی هستند ([tecmint.com][1]).
#### بازگشت مقدار:
برای بازگرداندن عدد کبود حالت (0–255) از `return` استفاده میشود:
```bash
func_name() {
local ret=5
return $ret
}
```
---
## ✅ جمعبندی
* توابع در Bash باعث **مدولار شدن اسکریپت، افزایش خوانایی، و قابلیت تست مستقل** میشوند.
* سینتکس تعریف و فراخوانی تابع ساده است، ولی **پارامترگیری و بازگشت مقدار باید هوشمندانه** انجام شود.
* میتوانید توابع را برای محاسبات، پردازش فایل، کدهای تکرارپذیر و منطق شرطی طراحی کنید.