فصل 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."
> fiThe 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."
> fiThe 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."
> fiThe 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."
> fiThe 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."
> fiThe 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وجود داشته و یک فایل متنی باشد (مثلا پوشه یا دستگاه نباشد.) درست است.