99fb7f0e82
- Created a new sitemap.xml file for better SEO. - Added a compressed version of the sitemap as sitemap.xml.gz. - Introduced extra.css for custom styles, including Persian font support (IRANSansX). - Defined font-face rules for regular and bold styles of IRANSansX. - Implemented various text styles and layout adjustments for better readability. - Enhanced Mermaid diagram styles to support Persian text rendering.
88 lines
2.8 KiB
Markdown
88 lines
2.8 KiB
Markdown
# درسنامه ۳-۵: شرطها در Bash (if)
|
|
|
|
در این درس یاد میگیریم چگونه با استفاده از شرطها (`if`) در اسکریپت تصمیم بگیریم؛ مثلا اگر سن کاربر بالای ۱۸ بود یک پیام خاص و در غیر این صورت پیام دیگری نمایش دهیم.
|
|
|
|
## ساختار کلی if در Bash
|
|
ساختار پایهٔ یک شرط:
|
|
|
|
```bash
|
|
if [ شرط ]
|
|
then
|
|
دستورات اگر شرط درست بود
|
|
else
|
|
دستورات اگر شرط نادرست بود
|
|
fi
|
|
```
|
|
|
|
نکتهها:
|
|
- `fi` همان `if` برعکس است و پایان بلوک شرطی را مشخص میکند.
|
|
- بین `[` و شرط و `]` باید فاصله بگذارید.
|
|
|
|
## مثال: بررسی سن کاربر
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
read -p "سن شما چند ساله است؟ " AGE
|
|
|
|
if [ "$AGE" -ge 18 ]
|
|
then
|
|
echo "You are an adult."
|
|
else
|
|
echo "You are not an adult yet."
|
|
fi
|
|
```
|
|
|
|
در اینجا:
|
|
- `-ge` یعنی «بزرگتر یا مساوی».
|
|
- از کوتیشن `" "` برای متغیر استفاده کردهایم تا اگر خالی بود، خطای عجیبی ندهد.
|
|
|
|
## مقایسهٔ عددی و متنی
|
|
چند عملگر عددی رایج:
|
|
- `-eq` مساوی
|
|
- `-ne` نامساوی
|
|
- `-gt` بزرگتر
|
|
- `-lt` کوچکتر
|
|
- `-ge` بزرگتر یا مساوی
|
|
- `-le` کوچکتر یا مساوی
|
|
|
|
مثال:
|
|
|
|
```bash
|
|
if [ "$AGE" -lt 13 ]; then
|
|
echo "Child"
|
|
elif [ "$AGE" -lt 18 ]; then
|
|
echo "Teenager"
|
|
else
|
|
echo "Adult"
|
|
fi
|
|
```
|
|
|
|
برای مقایسهٔ رشتهای ساده:
|
|
- `[ "$NAME" = "Ali" ]` یا `[ "$NAME" != "Ali" ]`
|
|
|
|
## مثال: بررسی آرگومان
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Please provide a name as an argument."
|
|
echo "Example: bash script.sh Ali"
|
|
exit 1
|
|
fi
|
|
|
|
NAME="$1"
|
|
echo "Hello $NAME!"
|
|
```
|
|
|
|
در اینجا:
|
|
- `-z "$1"` یعنی «آرگومان اول خالی است».
|
|
- با `exit 1` اسکریپت را با کد خطا خاتمه میدهیم (در این مرحله فقط بدانید که ۰ یعنی موفق، غیر از آن یعنی خطا).
|
|
|
|
## تمرین کوتاه
|
|
- اسکریپتی بنویسید که از کاربر سن را بپرسد و یکی از پیامهای «کودک»، «نوجوان»، «بزرگسال» را نمایش دهد.
|
|
- اسکریپتی بنویسید که یک عدد از کاربر بگیرد و بگوید زوج است یا فرد (راهنما: از عملگر `%` همراه با دستور `expr` یا `$(( ))` استفاده کنید؛ اگر هنوز با اینها آشنا نیستید، میتوانید این تمرین را برای بعد نگه دارید).
|
|
|
|
در درس بعد، با مجوزهای اجرایی (`chmod`) و روشهای مختلف اجرای اسکریپت آشنا میشویم.
|