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

لوگو

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

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

متغیرهای محلی

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

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

تصویر

در اینجا یک نمونه اسکریپت است که نشان می دهد چگونه متغیرهای محلی تعریف و استفاده می شوند:


#! / bin / bash


# local-vars: اسکریپت برای نشان دادن متغیرهای محلی

#! / bin / bash


# local-vars: اسکریپت برای نشان دادن متغیرهای محلی


foo=0

# متغیر جهانی foo

foo=0


funct_1 () {

local foo # متغیر foo local به funct_1 foo=1

echo "funct_1: foo = $foo"

}


funct_2 () {

local foo # متغیر foo local به funct_2 foo=2

echo "funct_2: foo = $foo"

}


echo "global: foo = $foo" funct_1

funct_1 () {

local foo # متغیر foo local به funct_1 foo=1

echo "funct_1: foo = $foo"

}


funct_2 () {

local foo # متغیر foo local به funct_2 foo=2

echo "funct_2: foo = $foo"

}


echo "global: foo = $foo" funct_1

متغیرهای محلی


echo "global: foo = $foo" funct_2

echo "global: foo = $foo"

echo "global: foo = $foo" funct_2

echo "global: foo = $foo"


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



[me@linuxbox ~]$ محلی-vars

جهانی: foo = 0 تابع_1: فو = 1 جهانی: فو = 0 تابع_2: فو = 2 جهانی: فو = 0

[me@linuxbox ~]$ محلی-vars

جهانی: foo = 0 تابع_1: فو = 1 جهانی: فو = 0 تابع_2: فو = 2 جهانی: فو = 0


می بینیم که انتساب مقادیر به متغیر محلی فو در هر دو تابع پوسته هیچ تاثیری بر مقدار فو خارج از توابع تعریف شده است.

این ویژگی به توابع پوسته اجازه می دهد تا به گونه ای نوشته شوند که مستقل از یکدیگر و از اسکریپتی که در آن ظاهر می شوند باقی بمانند. این بسیار ارزشمند است، زیرا به جلوگیری از تداخل بخشی از یک برنامه با قسمت دیگر کمک می کند. همچنین اجازه می دهد تا توابع پوسته نوشته شوند تا قابل حمل باشند. یعنی ممکن است بر حسب نیاز از اسکریپت به اسکریپت برش و چسبانده شوند.


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