فصل 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
هم سه بخش دارد.
- گزاره شرطی Conditional Statement:
اولین بخش با کلمه کلیدی
if
شروع میشود. و پس از چک کردن شرط
که در بین براکت
([[]]
)
نوشته میشود، در صورت درست بودن شرط به بخش بعد میرود.
در گزاره
$age -gt 10
بیشتر بودن سن را چک میکند.
- بدنه (Body):
درصوت درست بودن بخش اول دستورات این بخش اجرا میشود که با
کلمه کلیدی
then
شروع میشود.
که کاری که مد نظرمان هست را بعد آن مینویسیم.
که میتواند شامل دستورات زیادی باشد.
- اتمام 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
وجود داشته و یک فایل متنی باشد (مثلا پوشه یا دستگاه نباشد.) درست است.