پرش به محتویات

درسنامه ۳-۵: شرط‌ها در Bash (if)

در این درس یاد می‌گیریم چگونه با استفاده از شرط‌ها (if) در اسکریپت تصمیم بگیریم؛ مثلا اگر سن کاربر بالای ۱۸ بود یک پیام خاص و در غیر این صورت پیام دیگری نمایش دهیم.

ساختار کلی if در Bash

ساختار پایهٔ یک شرط:

if [ شرط ]
then
  دستورات اگر شرط درست بود
else
  دستورات اگر شرط نادرست بود
fi

نکته‌ها: - 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) و روش‌های مختلف اجرای اسکریپت آشنا می‌شویم.