درسنامه ۳-۵: شرطها در Bash (if)
در این درس یاد میگیریم چگونه با استفاده از شرطها (if) در اسکریپت تصمیم بگیریم؛ مثلا اگر سن کاربر بالای ۱۸ بود یک پیام خاص و در غیر این صورت پیام دیگری نمایش دهیم.
ساختار کلی if در Bash
ساختار پایهٔ یک شرط:
نکتهها:
- fi همان if برعکس است و پایان بلوک شرطی را مشخص میکند.
- بین [ و شرط و ] باید فاصله بگذارید.
مثال: بررسی سن کاربر
#!/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 کوچکتر یا مساوی
مثال:
if [ "$AGE" -lt 13 ]; then
echo "Child"
elif [ "$AGE" -lt 18 ]; then
echo "Teenager"
else
echo "Adult"
fi
برای مقایسهٔ رشتهای ساده:
- [ "$NAME" = "Ali" ] یا [ "$NAME" != "Ali" ]
مثال: بررسی آرگومان
#!/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) و روشهای مختلف اجرای اسکریپت آشنا میشویم.