دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. بررسی عملگرهای Shell در یونیکس (UNIX) را در این بخش از آموزش یونیکس دنبال خواهیم نمود. این مبحث در دو جلسه بیان می شود.
عملگرهای مختلفی وجود دارد که توسط هر شل پشتیبانی می شوند. ما در این بخش با جزئیاتی درباره Bourne shell (پوسته پیش فرض) صحبت خواهیم کرد.
اکنون در مورد عملگرهای زیر بحث خواهیم کرد.
Bourne shell در ابتدا هیچ مکانیسمی برای انجام عملیات حسابی ساده نداشت اما از برنامه های خارجی اعم از awk یا expr استفاده می کرد.
مثال زیر نحوه جمع کردن دو عدد را نشان می دهد.
1 2 3 4 | #!/bin/sh val=`expr 2 + 2` echo "Total value : $val" |
اسکریپت بالا نتیجه زیر را ایجاد می کند.
1 | Total value : 4 |
ضمن add کردن نکات زیر باید مورد توجه قرار گیرد.
عبارت کامل باید بین ‘ ‘محصور شود ، backtick نامیده می شود.
عملگرهای حسابی زیر توسط Bourne Shell پشتیبانی می شوند.
فرض کنید متغیر a دارای ۱۰ و متغیر b دارای مقدار ۲۰ است. سپس:
عملگر | شرح | مثال |
---|---|---|
+ (Addition) – اضافه کردن | مقادیر هر طرف عملگر را به هم اضافه می کند. | expr $a + $b می شود ۳۰ |
– (Subtraction) – کم کردن | عملوند دست راست را از عملوند دست چپ کم می کند. | expr $a - $b می شود ۱۰- |
* (Multiplication) – ضرب کردن | مقادیر دو هر طرف عملگر را در هم ضرب می کند. | expr $a \* $b می شود ۲۰۰ |
/ (Division) – تقسیم | عملوند دست چپ را توسط عملوند دست راست تقسيم مي كند. | expr $b / $a می شود ۲ |
% (Modulus) | عملوند دست چپ را بر عملوند دست راست تقسیم کرده و باقیمانده را بازمی گرداند. | expr $b % $a می شود ۰ |
= (Assignment) – تخصیص | عملوند راست را به عملوند چپ اختصاص می دهد. | a = $b مقدار b را به مقدار a اختصاص می دهد |
== (Equality) – تساوی | دو عدد را با هم مقایسه می کند ، اگر هر دو یکسان باشند ، true را برمی گرداند. | [ $a == $b ] برمی گرداند false را. |
!= (Not Equality) | دو عدد را با هم مقایسه می کند ، اگر آن دو با هم متفاوت باشند ، true را برمی گردند. | [ $a != $b ] برمی گرداند true را. |
درک این نکته ضروری است که همه عبارات شرطی باید در داخل براکت [] با فضاهایی اطراف شان باشند ، برای مثال [ $a == $b ] صحیح است در حالی که ، [$a==$b] نادرست است.
تمام محاسبات حسابی با استفاده از اعداد صحیح طولانی انجام می شود.
Bourne Shell از عملگرهای رابطه ای زیر که مختص مقادیر عددی هستند پشتیبانی می کند. این عملگرها برای مقادیر رشته کار نمی کنند مگر این که مقدار آن ها عددی باشد.
به عنوان مثال ، عملگرهای زیر برای بررسی رابطه بین ۱۰ و ۲۰ و همچنین بین “۱۰” و “۲۰” کار می کنند اما برای “ده” و “بیست” کار نمی کنند.
فرض کنید متغیر a دارای مقدار ۱۰ و متغیر b دارای مقدار ۲۰ است. سپس:
عملگر | شرح | مثال |
---|---|---|
eq- | بررسی می کند که آیا مقدار دو عملوند برابر است یا نه. اگر بله ، پس شرط true است. | [ a -eq $b$ ] درست (true) نیست. |
ne- | بررسی می کند که آیا مقدار دو عملوند برابر است یا نه. اگر مقادیر مساوی نباشند ، این شرط true است. | [ a -ne $b$ ] درست (true) است. |
gt- | بررسی می کند که آیا مقدار عملوند چپ از مقدار عملوند راست بیش تر است یا نه. اگر بله ، پس شرط درست است. | [ a -gt $b$ ] درست (true) نیست. |
lt- | بررسی می کند که آیا مقدار عملوند چپ کم تر از مقدار عملوند راست است یا خیر. اگر بله ، پس شرط درست است. | [ a -lt $b$ ] درست (true) است.. |
ge- | بررسی می کند که آیا مقدار عملوند چپ بزرگ تر یا مساوی با مقدار عملوند راست است یا خیر. اگر بله ، پس شرط درست است. | [ a -ge $b$ ] درست (true) نیست.. |
le- | بررسی می کند که آیا مقدار عملوند چپ کم تر یا مساوی با مقدار عمل راست است یا خیر. اگر بله ، پس شرط درست است. | [ a -le $b$ ] درست (true) است. |
درک این نکته بسیار مهم است که همه عبارات شرطی را باید درون براکت [] با فضاهای اطراف آن ها قرار دهید. به عنوان مثال ، [ $a <= $b ] درست است در حالی که ، [$a <= $b] نادرست است.
مبحث بررسی عملگرهای Shell در یونیکس (UNIX) را در این بخش به پایان می رسانیم.
بررسی عملگرهای Shell در یونیکس (UNIX) را در جلسه آینده نیز ادامه خواهیم داد و سایر عملگرها را مورد بررسی قرار خواهیم داد. با وب سایت پی وی لرن همراه باشید.