فصل 9 گزاره شرطی

9.1 گزاره شرطی:

گزاره شرطی (Conditional Statements) را if-else نیز می‌نامند:

  • اگر گزاره درست (true) باشد کاری انجام شود.

  • اگر گزاره غلط (false) باشد کار دیگری انجام شود.

9.2 گزاره اگر …

اگر درست بود پس فلان کار را انجام بده. برای مثال در کد زیر اگر سن بزرگتر از ده بود عبارت The age is greater than 10. را چاپ کن:

$ age=20

$ if [[ $age -gt 10 ]]
> then
>   echo "The age is greater than 10."
> fi
The age is greater than 10.

مثل حقله for گزاره if-else هم سه بخش دارد.

  1. گزاره شرطی Conditional Statement:

اولین بخش با کلمه کلیدی if شروع می‌شود. و پس از چک کردن شرط که در بین براکت ([[]]) نوشته می‌شود، در صورت درست بودن شرط به بخش بعد می‌رود.

در گزاره $age -gt 10 بیشتر بودن سن را چک می‌کند.

  1. بدنه (Body):

درصوت درست بودن بخش اول دستورات این بخش اجرا می‌شود که با کلمه کلیدی then شروع می‌شود. که کاری که مد نظرمان هست را بعد آن می‌نویسیم. که می‌تواند شامل دستورات زیادی باشد.

  1. اتمام End:

در این بخش فقط کلمه کلیدی fi را می‌نویسیم که بیانگر اتمام گزاره شرطی است.

9.3 گزاره اگر و دیگر

در این گزاره یک حالت دیگر else هم وجود دارد که اگر شرط if غلط بود دستورات دستورات دیگری اجرا می‌شود.

$ age=8

$ if [[ $age -gt 10 ]]
> then
>   echo "The age is greater than 10."
> else
>   echo "The variable is equal or less than 10."
> fi
The variable is equal or less than 10.

9.4 گزاره شرطی «اگر» و «دیگر اگر» و «دیگر»

در این گزاره یک حال دیگر اگر elif وجود دارد که اگر شرط اول درست نبود گزاره شرطی دیگری را بررسی می‌کند.

$ age=10

$ if [[ $VAR -gt 10 ]]
> then
>   echo "The variable is greater than 10."
> elif [[ $VAR -eq 10 ]]
> then
>   echo "The variable is equal to 10."
> else
>   echo "The variable is less than 10."
> fi
The variable is equal to 10.

9.5 عملگر «و»

با عملگر «و» && می‌توان دو شرط را باهم در یک گزاره بررسی کرد که اگر هر دو شرایط درست بودند دستورات در بدنه اجرا شود.

$ age=20

$ if [[ $VAR -gt 10 && $VAR -lt 30 ]]
> then
>   echo "The variable is in the range of 10 to 30."
> else
>   echo "The variable is not between 10 and 30."
> fi
The variable is in the range of 10 to 30.

9.6 عملگر «یا»

با استفاده از عملگر «یا» || می‌توانیم دو شرط را در یک گزاره بررسی کنیم که اگر یکی از آن‌ها برقرار بود دستورات بدنه اجرا شود.

$ age=50

$ if [[ $VAR -lt 10 || $VAR -gt 30 ]]
> then
>   echo "The variable is not between 10 and 30."
> else
>   echo "The variable is in the range of 10 to 30."
> fi
The variable is not between 10 and 30.

9.7 آزمون‌ها

  • -n VAR: اگر اندازه VAR بیشتر از صفر باشد درست است.

  • -z VAR: اگر VAR خالی باشد درست است.

  • STR1 == STR2: اگر رشته STR1 با رشته STR2 مساوی باشد درست است.

  • STR1 != STR2: اگر رشته STR1 با رشته STR2 مساوی نباشد درست است.

  • INT1 -eq INT2: اگر عدد INT1 با عدد INT مساوی باشند درست است.

  • INT1 -gt INT2: اگر عدد INT1 از عدد INT2 بزرگتر باشد درست است.

  • INT1 -lt INT2: اگر عدد INT1 از عدد INT2 کوچکتر باشد درست است.

  • INT1 -ge INT2: اگر عدد INT1 از عدد INT2 بزرگتر یا مساوی باشد درست است.

  • INT1 -le INT2: اگر عدد INT1 از عدد INT2 کوچکتر یا مساوی باشد درست است.

  • -h FILE: اگر FILE وجود داشته و یک پیوند نمادین باشد درست است.

  • -r FILE: اگر FILE وجود داشته و قابل خواندن باشد درست است.

  • -w FILE: اگر FILE وجود داشته و قابل نوشتن باشد درست است.

  • -x FILE: اگر FILE وجود داشته و قابل اجرا باشد درست است.

  • -d FILE: اگر FILE وجود داشته و یک پوشه باشد درست است.

  • -e FILE: اگر FILE وجود داشته و فایل باشد . (بدون در نظر گرفتن نوع آن) درست است.

  • -f FILE: اگر FILE وجود داشته و یک فایل متنی باشد (مثلا پوشه یا دستگاه نباشد.) درست است.