ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

واگذاری

اگرچه کاربرد آن ممکن است فوراً آشکار نباشد، عبارات حسابی ممکن است تخصیص را انجام دهند. ما بارها تکلیف را انجام داده ایم، هرچند در زمینه متفاوتی. هر بار که به یک متغیر مقدار می دهیم، در حال انجام انتساب هستیم. ما همچنین می توانیم آن را در عبارات حسابی انجام دهیم:



[me@linuxbox ~]$ فو =

[me@linuxbox ~]$ پژواک $foo


[me@linuxbox ~]$ اگر (( foo = 5 ))؛ سپس "درست است" را تکرار کنید. فی

درست است.

[me@linuxbox ~]$ پژواک $foo

5

[me@linuxbox ~]$ فو =

[me@linuxbox ~]$ پژواک $foo


[me@linuxbox ~]$ اگر (( foo = 5 ))؛ سپس "درست است" را تکرار کنید. فی

درست است.

[me@linuxbox ~]$ پژواک $foo

5


در مثال بالا، ابتدا یک مقدار خالی به متغیر اختصاص می دهیم فو و بررسی کنید که واقعا خالی است. بعد، یک را اجرا می کنیم if با دستور مرکب (( Foo = 5

)). این فرآیند دو کار جالب انجام می دهد: 1) مقدار 5 را به متغیر اختصاص می دهد

foo، و 2) آن را به درستی ارزیابی می کند زیرا foo یک مقدار غیر صفر اختصاص داده شده است.


تصویر

توجه داشته باشید: مهم است که معنی دقیق آن را به خاطر بسپارید = در عبارت بالا یک مجرد = تکلیف را انجام می دهد فو = 5 می گوید «ساخت فو برابر با 5” در حالی که == هم ارزی را ارزیابی می کند فو == 5 می گوید «می کند فو برابر 5؟" این یک ویژگی رایج در بسیاری از زبان های برنامه نویسی است. در پوسته، این می تواند کمی گیج کننده باشد زیرا آزمون فرمان یک واحد را می پذیرد = برای معادل رشته دلیل دیگری برای استفاده از مدرن تر است [[]] و (( )) دستورات ترکیبی به جای آزمون.


تصویر

علاوه بر این به =, پوسته همچنین نمادهایی را ارائه می دهد که برخی از وظایف بسیار مفید را انجام می دهد:


جدول 34-4: اپراتورهای واگذاری


شرح نماد

شرح نماد


تصویر

پارامتر = ارزش تکلیف ساده اختصاص می دهد ارزش به پارامتر.


تصویر

پارامتر += ارزش اضافه معادل با پارامتر = پارامتر +

ارزش.


تصویر

پارامتر -= ارزش منها کردن. معادل با پارامتر = پارامتر -

ارزش.


تصویر

پارامتر *= ارزش ضرب. معادل با پارامتر = پارامتر

* ارزش.


تصویر

پارامتر /= ارزش تقسیم عدد صحیح معادل با پارامتر =

پارامتر / مقدار


تصویر

پارامتر %= ارزش ماژول. معادل با پارامتر = پارامتر %

ارزش.


تصویر

پارامتر++ متغیر پس از افزایش. معادل با پارامتر =

پارامتر + 1 (با این حال، بحث زیر را ببینید).


تصویر

پارامتر-- متغیر پس از کاهش. معادل با پارامتر =

پارامتر - 1.


تصویر

++پارامتر پیش افزایش متغیر معادل با پارامتر =

پارامتر + 1.


تصویر

--پارامتر پیش کاهش متغیر. معادل با پارامتر =

پارامتر - 1.


تصویر


این عملگرهای تخصیص، مختصر نویسی مناسبی برای بسیاری از کارهای معمول حسابی ارائه می کنند. مورد توجه ویژه افزایش (++) و کاهش (---عملگرهایی که مقدار پارامترهای خود را یک بار افزایش یا کاهش می دهند. این سبک نشانه گذاری از زبان برنامه نویسی C گرفته شده است و در تعدادی از زبان های برنامه نویسی دیگر گنجانده شده است. بر هم زدن.

عملگرها ممکن است در جلوی یک پارامتر یا در انتهای آن ظاهر شوند. در حالی که هر دو پارامتر را به اندازه یک افزایش یا کاهش می دهند، این دو مکان تفاوت ظریفی دارند. اگر در جلوی پارامتر قرار گیرد، پارامتر قبل از بازگرداندن پارامتر افزایش (یا کاهش) می یابد. در صورت قرار دادن بعد، عملیات انجام می شود بعد از پارامتر برگردانده می شود. این نسبتاً عجیب است، اما این رفتار مورد نظر است. در اینجا یک تظاهرات است:



[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((foo++)) 1

[me@linuxbox ~]$ پژواک $foo

[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((foo++)) 1

[me@linuxbox ~]$ پژواک $foo


2

2


اگر مقدار یک را به متغیر اختصاص دهیم فو و سپس آن را با ++ عملگر که بعد از نام پارامتر قرار می گیرد، فو با مقدار یک برگردانده می شود. با این حال، اگر برای بار دوم به مقدار متغیر نگاه کنیم، مقدار افزایش یافته را مشاهده می کنیم. اگر قرار دهیم ++ عملگر جلوی پارامتر، رفتار مورد انتظار بیشتری را دریافت می کنیم:


[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((++foo)) 2

[me@linuxbox ~]$ پژواک $foo

2

[me@linuxbox ~]$ foo=1 [me@linuxbox ~]$ echo $((++foo)) 2

[me@linuxbox ~]$ پژواک $foo

2


برای اکثر برنامه های کاربردی پوسته، پیشوند اپراتور مفیدترین خواهد بود.

عملگرهای ++ و -- اغلب همراه با حلقه ها استفاده می شوند. ما در اسکریپت مدولوی خود اصلاحاتی ایجاد خواهیم کرد تا کمی آن را سخت تر کنیم:



#! / bin / bash

# modulo2: عملگر مدول را برای ((i = 0; i <= 20; ++ من ))؛ انجام دادن

اگر (((i % 5) == 0)) سپس printf "<%d>" $i

دیگر

printf "%d" $i

فی انجام شد

printf "\ n"

#! / bin / bash

# modulo2: عملگر مدول را برای ((i = 0; i <= 20; ++ من ))؛ انجام دادن

اگر (((i % 5) == 0)) سپس printf "<%d>" $i

دیگر

printf "%d" $i

فی انجام شد

printf "\ n"


برترین سیستم عامل Cloud Computing در OnWorks: