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

لوگو

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

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

متغیرها و ثابت ها

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



#! / bin / bash


# برنامه برای خروجی صفحه اطلاعات سیستم


title="گزارش اطلاعات سیستم"


پژواک"

$title

$title

"

#! / bin / bash


# برنامه برای خروجی صفحه اطلاعات سیستم


title="گزارش اطلاعات سیستم"


پژواک"

$title

$title

"


با ایجاد یک متغیر تحت عنوان عنوان و با اختصاص مقدار «گزارش اطلاعات سیستم»، می‌توانیم از مزیت بسط پارامتر استفاده کرده و رشته را در چندین مکان قرار دهیم.

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


[me@linuxbox ~]$ فو "بله" [me@linuxbox ~]$ پژواک $foo بله

[me@linuxbox ~]$ پژواک $ احمق


[me@linuxbox ~]$

[me@linuxbox ~]$ فو "بله" [me@linuxbox ~]$ پژواک $foo بله

[me@linuxbox ~]$ پژواک $ احمق


[me@linuxbox ~]$


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



[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ echo $foo


تحت بسط پارامتر قرار می گیرد و نتیجه می دهد:



[me@linuxbox ~]$ پژواک بله

[me@linuxbox ~]$ پژواک بله


در حالی که دستور:



[me@linuxbox ~]$ echo $fool

[me@linuxbox ~]$ echo $fool


گسترش می یابد به:



[me@linuxbox ~]$ echo

[me@linuxbox ~]$ echo


متغیر خالی تبدیل به هیچ می شود! این می تواند با دستوراتی که به آرگومان نیاز دارند، ویران کند. در اینجا یک مثال است:



[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $fool

cp: عملوند فایل مقصد از دست رفته بعد از «foo.txt»

[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $fool

cp: عملوند فایل مقصد از دست رفته بعد از «foo.txt»


برای اطلاعات بیشتر «cp --help» را امتحان کنید.

برای اطلاعات بیشتر «cp --help» را امتحان کنید.


ما به دو متغیر مقادیر اختصاص می دهیم، فو و foo1. سپس یک را اجرا می کنیم cp، اما نام آرگومان دوم را اشتباه بنویسید. پس از گسترش، cp فرمان فقط یک آرگومان ارسال می شود، اگرچه به دو آرگومان نیاز دارد.

قوانینی در مورد نام متغیرها وجود دارد:

1. نام متغیرها ممکن است از کاراکترهای الفبایی (حروف و اعداد) و کاراکترهای زیرخط تشکیل شده باشد.

2. اولین کاراکتر نام متغیر باید یک حرف یا زیرخط باشد.

3. فاصله و علامت نقطه گذاری مجاز نمی باشد.

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



#! / bin / bash

# برنامه برای خروجی صفحه اطلاعات سیستم TITLE="گزارش اطلاعات سیستم برای $HOSTNAME"پژواک"

$TITLE

$TITLE

"

#! / bin / bash

# برنامه برای خروجی صفحه اطلاعات سیستم TITLE="گزارش اطلاعات سیستم برای $HOSTNAME"پژواک"

$TITLE

$TITLE

"


ما همچنین از این فرصت استفاده کردیم تا با اضافه کردن مقدار متغیر پوسته، عنوان خود را جاز کنیم

HOSTNAME. این نام شبکه دستگاه است.


تصویر

توجه داشته باشید: پوسته در واقع راهی برای اعمال تغییرناپذیری ثابت ها از طریق استفاده از اعلام دستور ساخته شده با -r گزینه (فقط خواندنی). تعیین کرده بودیم TITLE این طرف:


declare -r TITLE="عنوان صفحه"


پوسته از هر گونه انتساب بعدی به آن جلوگیری می کند TITLE. این ویژگی به ندرت استفاده می شود، اما برای اسکریپت های بسیار رسمی وجود دارد.


تصویر


 

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