اتخاذ تصمیم در شل - لینوکس - بخش اول
امروز تصمیم دارم راجع به اتخاذ تصمیم در اسکریپت نویسی به زبان shell یا همون bash ی توضیحاتی بدم. در شل دو حالت کلی وجود داره.
۱) if else
۲) case esac
عبارات if else
امروز من مورد یک رو که همون عبارت if else هست رو توضیح میدم. خود این مساله هم چند حالت داره که خدمتتون میگم:
۱) if fi
این بخش ساده ترین حالت جملات شرطی هست که ابتدای اون کلمه if و انتها باید fi آورده بشه. قاعده کلی استفاده از اون به صورت زیر است:
if [ expression ]
then
Statement(s) to be executed if expression is true
fi
اگر شرط صحیح بود عبارت درون شرط اجرا میشه. در غیر این صورت عبارت درون شرط اجرا نمیشه. اگر شرط شما یک دستور باشه و درست باشه سیستم عامل مقدار صفر رو و اگر شرط از نوعه بولین باشه و درست باشه سیستم مقدار true رو برمیگردونه.
به مثال زیر توجه کنید:
#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
fi
if [ $a != $b ]
then
echo "a is not equal to b"
fi
بعد از اجرا کردن کد مقدار زیر رو به شما برمیگردونه:
a is not equal to b
۲) if else if
بعد از شرح مورد قبل این مورد کمی کامل تر هست. به طوری که اگر شرط درست باشه عبارت اجرا میشه اما اگر شرط درست نباشه جملات بعد از else بررسی میشه و به اجرا در میاد.
قاعده کلی استفاده از آن به صورت زیر است:
if [ expression ]
then
Statement(s) to be executed if expression is true
else
Statement(s) to be executed if expression is not true
fi
برای درک بهتر به مثال زیر توجه کنید:
#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
بعد از اجرا خروجی زیر رو دریافت خواهید کرد:
a is not equal to b
۳) if elif fi
این حالت از کاملترین حالات بررسی شرط هست که بسته به نیازتون میتونید ازش استفاده کنید. در این حالت شما میتونید چند شرط رو داخل یک شرط بررسی کنید. قاعده کلی استفاده از اون به صورت زیر است:
if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
برای اینکه بهتر متوجه بشید میتونید مثال زیر رو مطالعه و اجرا کنید:
#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
elif [ $a -gt $b ]
then
echo "a is greater than b"
elif [ $a -lt $b ]
then
echo "a is less than b"
else
echo "None of the condition met"
fi
بعد از اجرای اسکریپت خروجی زیر رو دریافت خواهید کرد:
a is less than b