## 📚 محاسبات پیشرفته در اسکریپتهای Shell – بخش پنجم
### 🔢 محاسبه دنباله فیبوناچی (Fibonacci)
این اسکریپت بهصورت پویا **عدد nام** از دنباله فیبوناچی را محاسبه و نمایش میدهد:
```bash
x=0; y=1
echo "$x"
echo "$y"
i=2
while [ $i -lt $total ]; do
z=$((x + y))
echo "$z"
x=$y; y=$z
i=$((i + 1))
done
```
این روش، جمع دو عدد قبلی را تا nم محاسبه میکند ([tecmint.com][1]).
---
### 🔄 تبدیل بین مبناهای عددی
#### ✅ تبدیل دودویی → دهدهی
```bash
while [ $Binary -ne 0 ]; do
digit=$((Binary % 10))
Decimal=$((Decimal + digit * power))
power=$((power * 2))
Binary=$((Binary / 10))
done
echo "Decimal Value: $Decimal"
```
یا بهسادگی:
```bash
echo "ibase=2; 11010101" | bc
```
ابزار `bc` بهصورت مستقیم و ساده تبدیل مبنا را انجام میدهد ([tecmint.com][1]).
---
### 🛠 تبدیل بین مبناهای دیگر با `bc`
چند نمونه:
```
echo "obase=8; 123" | bc # دهدهی → هشتدهی
echo "obase=16; 123" | bc # دهدهی → شانزدهدهی
echo "ibase=8; 173" | bc # هشتدهی → دهدهی
echo "ibase=16; 7B" | bc # شانزدهدهی → دهدهی
echo "ibase=2; obase=8; 101101" | bc # دودویی → هشتدهی
```
این ابزار توانایی تبدیل بین مبناهای مختلف را با ترکیب `ibase` و `obase` فراهم مینماید ([appservgrid.com][2]).
---
### 🔍 مقایسهی عددی (`Numeric Tests`)
برای مقایسه اعداد در شرایط شرطی Bash از دستورات زیر استفاده کنید:
| فرمان | توضیح |
| ----- | -------------------- |
| `-eq` | برابر است |
| `-ne` | نابرابر است |
| `-gt` | بزرگتر است |
| `-lt` | کوچکتر است |
| `-ge` | بزرگتر یا مساوی است |
| `-le` | کوچکتر یا مساوی است |
مثال:
```bash
if [ "$a" -gt "$b" ]; then
echo "a بزرگتر از b است."
fi
```
([linkedin.com][3], [tecmint.com][1])
---
## 🧭 نتیجهگیری
در این بخش با سه موضوع مهم آشنا شدیم:
1. **محاسبه دنباله فیبوناچی** با حلقه و عملیات جبری در Bash
2. **تبدیل مبناهای عددی** (دودویی، هشتدهی، دهدهی، شانزدهدهی) با استفاده از `while` و `bc`
3. **استفاده از تستهای شرطی برای مقایسه عددی**
این مباحث، پایهای جهت برداشتن گامهای بزرگتر در برنامهنویسی شل محسوب میشوند. دانستن آنها، به شما قدرت ایجاد **اسکریپتهای ریاضی و الگوریتمی** را میدهد.