در قسمت قبل با نحوه ویرایش فایل ها با استفاده از دستور sed آشنا شدیم, که کمک میکرد فایل های کانفیگ سرویس های مختلف را به طور خودکار ویرایش کنیم.
در این قسمت به بررسی عبارات شرطی میپردازیم.
اسکریپت نویسی شل لینوکس برای وبمسترها – قسمت۳
ساده ترین دستور شرطی, دستور if است ساختار کلی آن به صورت مقابل میباشد:
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
و ساده ترین صورت آن به این شکل خواهد بود:
if [ expression ]
then
Statement(s)
fi
- نشانگر شرطی است که باید بررسی شود, و statement دستور یا دستوراتی است که در صورت صحت expression باید اجرا شود.
شرط میتواند به صورت زیر باشد:
if [ “$AGE” -lt 20 ]
then
echo “you are too young”
یعنی اگر مقدار متغیر AGE کمتر از ۲۰ باشد(less than) با استفاده از دستور echo متن مورد نظر را چاپ میکند.
عباراتی مثل –lt برای مقایسه های مختلف بین مقادیر میباشند, برخی از مهم ترین عبارات مقایسه را در زیر مشاهده میکنید:
مقایسه
-eq | equal to | برابر با |
-ne | not equal to | نا برابر با |
-lt | less than | کوچکتر از |
-le | less than or equal to | کمتر یا برابر |
-gt | greater than | بزرگتر از |
-ge | greater than or equal to | بزرگتر یا مساوی |
فایل :
-s | file exists and is not empty | فایل وجود دارد و خالی نیست |
-f | file exists and is not a directory | فایل وجود دارد و دایرکتوری نیست |
-d | directory exists | دایرکتوری وجود دارد |
-x | file is executable | فایل اجرایی است |
-w | file is writable | فایل قابل نوشتن است |
-r | file is readable | فایل قابل خواندن است |
“و”,”یا”:
شاید بخواهید در شرط هایتان چند مورد را بررسی کنید, در این مواقع از علامت || برای “یا” ی منطقی و && برای “و” منطقی استفاده میکنیم.
مثلا در صورتی که میخواهید بررسی کنید یک فایل هم قابل خواندن و هم قابل نوشتن میباشد, اسکریپت به صورت زیر خواهد بود:
if [ -r “file” ] && [ -w “file” ]; then
echo “Able To Read and Write.”
Fi
به آخرین مثال توجه کنید»
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