منبع اصلی نوشتار زیر در این لینک قرار دارد

انواع متغیر

ادامه یادداشت قبل


راهنمای آموزشی  BashGuide   مؤلف  Lhunath


انواع متغیر

اگر چه BASH یک زبان تیپیک نیست، چند نوع متغیر متفاوت دارد. این گروه‌ها، نوع کمیتی که می‌توانند داشته باشند را مشخص می‌کنند. اطلاعات نوع متغیر به طور داخلی توسط Bash نگهداری می‌شوند.

  • آرایه: ‎ دستور declare -a variable‎: یک متغیر که آرایه‌ای از رشته‌هاست، تعریف می‌کند.

  • آرایه‌ انجمنی(شرکت‌پذیر): ‎ دستور declare -A variable‎: یک متغیر آرایه‌ای شرکت پذیر از رشته‌ها تعریف می‌کند(bash نگارش 4.0 یا بالاتر).

  • عدد صحیح: دستور ‎declare -i variable‎: یک متغیر نگاهدارنده عدد صحیح تعریف می‌کند. تخصیص مقدار به این متغیر، به طور خودکار ارزیابی حسابی را فعال می‌کند.

  • فقط خواندنی: دستور ‎declare -r variable‎: متغیری تعریف می‌کند که نمی‌تواند اصلاح یا حذف شود.

  • Export: دستور ‎declare -x variable: متغیر را به صورت صادر نمودنی تعریف می‌کند، یعنی می‌تواند به زیرپوسته‌ها یا پردازش فرزند به ارث برسد.

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

تعریف متغیرها به عنوان عدد صحیح، این مزیت را دارد، که موقع تخصیص و اصلاح آنها می‌توانید از برخی ترکیب‌های دستوری( syntax)صرفنظر کنید:

    $ a=5; a+=2; echo $a; unset a

    52
    $ a=5; let a+=2; echo $a; unset a

    7
    $ declare -i a=5; a+=2; echo $a; unset a

    7
    $ a=5+2; echo $a; unset a

    5+2
    $ declare -i a=5+2; echo $a; unset a

    7

هرچندکه، در عمل استفاده از   declare -i به اندازه زیادی کمیاب است. به طور عمده، این به علت ایجاد رفتاری است، که برای شخصی که از اسکریپت نگهداری می کند و به وجود دستور declare اشراف ندارد ، شگفت‌آور خواهد بود. اکثر اسکریپت نویسان ورزیده، ترجیح می‌دهند، وقتی می‌خواهند محاسبات انجام دهند، از دستورات صریح حسابی let یا ‎((...))‎، استفاده کنند.

همچنین یک تعریف صریح از یک آرایه با استفاده از ‎declare -a‎ به ندرت می‌بینید. نوشتن ‎array=(...)‎ کافی است و Bash آگاه خواهد شد که اکنون متغیر یک آرایه است. به استثنای آرایه شرکت‌پذیر، که باید به طور صریح تعریف شود، یعنی: declare -A myarray.


  • رشته: یک رشته، توالی از کاراکترها می‌باشد.

  • آرایه: یک آرایه لیستی از رشته هامی‌باشد، که با اعداد شاخص‌گذاری شده‌اند.

  • عدد صحیح: یک عدد کامل مثبت، منفی، یا صفر می‌باشد.

  • فقط خواندنی: پارامترهایی که فقط خواندنی هستند نمی‌توانند حذف یا اصلاح شوند.

  • Export: متغیرهایی که به عنوان صادر کردنی علامت خورده‌اند به هر زیرپوسته یا پردازش فرزند به ارث می‌رسند.



ادامه دارد ....