راهنمای آموزشی اسکریپت نویسی - مقدماتی

لطفا برای بهتر دیدن صفحه از firefox استفاده کنید
Bash Guide for Beginners Machtelt Garrels

راهنمای Bash برای نوآموزان

تمرین ها »
« متغیرهای آرایه‌ای

فصل 10: بیشتر در باره متغیرها

فهرست مطالب

انواع متغیرها
تخصیص کمیت‌های عمومی
کاربرد دستور داخلی declare
ثابت‌ها
متغیرهای آرایه‌ای
ایجاد آرایه‌ها
Dereferencing متغیرها در یک آرایه
حذف متغیرهای آرایه‌ای
مثال‌های آرایه‌ها
عملیات روی متغیرها
محاسبات با متغیرها
طول یک متغیر
تبدیلات متغیرها
خلاصه
تمرین‌ها

چکیده

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

  • یک آرایه از متغیرها را تعریف و از آن استفاده کنید

  • ترتیب متغیرهایی که می‌خواهید استفاده کنید را مشخص نمایید

  • متغیرها را فقط خواندنی بسازید

  • از set برای تخصیص کمیت به یک متغیر استفاده کنید

انواع متغیرها

تخصیص همگانی کمیت‌ها

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

[bob in ~] VARIABLE=12

[bob in ~] echo $VARIABLE
12

[bob in ~] VARIABLE=string

[bob in ~] echo $VARIABLE
string

وضعیت‌هایی وجود دارند که شما می‌خواهید از این رفتار اجتناب گردد، به عنوان نمونه موقعی که می‌خواهید با شماره تلفن‌ها یا سایر اعداد کار کنید. غیر از اعداد صحیح و متغیرها، همچنین ممکن است بخواهید متغیری تعیین کنید که مقدارش ثابت باشد. این غالباً در ابتدای یک اسکریپت انجام می‌شود، وقتی که کمیت ثابت تعریف می‌شود. بعد از آن، فقط ارجاع‌های به آن نام متغیر ثابت وجود دارد، برای اینکه وقتی لازم باشد تغببر داده شود، فقط یکبار باید انجام شود. یک متغیر همچنین میتواند یک سری از هرنوع متغیر باشد، که آرایه متغیرها نامیده شده ‎(VAR0, VAR1, VAR2, ... VARN)‎.

کاربرد دستور داخلی declare

با استفاده از جمله declare ، می‌توانیم اختصاص کمیت‌ها به متغیرها را محدود نماییم.

دستور زبان برای declare به صورت زیر است:

declare OPTION(s) VARIABLE=value

گزینه‌های زیر میتوانند برای تعیین نوع داده ‌ای که متغیر می‌تواند نگهدارد و تخصیص صفات آن استفاده شود:

جدول 10.1: گزینه‌های فرمان داخلی declare

گزینهمعنی
-aمتغیر یک آرایه است.
-fفقط استفاده نام توابع.
-iبا متغیر مانند یک عدد صحیح رفتار می‌شود، وقتی مقداری به متغیر اختصاص یابد، ارزیابی حسابی انجتم می‌شود(به بخشی تحت عنوان«بسط حسابی») نگاه کنید.
-pمقدار و صفات هر متغیر را نمایش می‌دهد. وقتی ‎ -p‎ استفاده شود، گزینه‌های اضافی چشم‌پوشی می‌شوند.
-rمتغیرها را فقط‌خواندنی می‌کند. این متغیرها پس از اختصاص یافتن مقدار نه می‌توانند با تخصیص‌های ثانوی تغییر داده شوند و نه می‌توانند حذف گردند.
-tبه هر متغیری صفت trace (پیگردی) می‌دهد.
-xهر متغیر را برای صادر شدن به دستورات ثانوی از طریق محیط علامت می‌زند.

کاربرد + به جای - در عوض صفات را خاموش می‌کند. declare موقعی که در توابع به کار برود، متغیرهای محلی ایجاد می‌کند.

مثال زیر نشان می‌دهد که چگونه اختصاص یک نوع به یک متغیر بر مقدار آن تأثیر می‌کند.

[bob in ~] declare -i VARIABLE=12

[bob in ~] VARIABLE=string

[bob in ~] echo $VARIABLE
0

[bob in ~] declare -p VARIABLE
declare -i VARIABLE="0"

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

[bob in ~] OTHERVAR=blah

[bob in ~] declare -p OTHERVAR
declare -- OTHERVAR="blah"

به محض اینکه اختصاص کمیت‌ها به متغیر را محدود کنید، فقط می‌تواند آن نوع داده را نگهداری کند. محدودیت‌های ممکن، صحیح، ثابت یا آرایه هستند.

صفخه‌های info از Bash را برای اطلاعات در مورد کد برگشتی ملاحظه کنید.

ثابت‌ها

در Bash، ثابت‌ها با فقط‌خواندنی کردن متغیر ایجاد می‌شوند. دستور داخلی readonly هر متغیر تعیین شده را به عنوان غیرقابل تغییر علامت می‌زند. ترکیب دستور چنین است:

readonly OPTION VARIABLE(s)

مقدار این متغیرهابعداً نمی‌تواند با تخصیص ثانوی تغییر نماید. اگر گزینه ‎ -f‎ داده شده باشد، هر متغیر میتواند به یک تابع رجوع نماید، به فصل 11, توابع نگاه کنید. اگر گزینه ‎ -a‎ تعیین شده باشد، هر متغیر به یک آرایه از متغیرها رجوع می‌کند. اگر شناسه‌ای به کار نرود و یا گزینه ‎ -p‎ فراهم شده باشد، لیستی از تمام متغیرهای فقط‌خواندنی نمایش داده می‌شود. با استفاده از گزینه ‎ -p ‎، خروجی می‌تواند به عنوان ورودی استفاده مجدد بشود.

کد برگشتی صفر است، مگر آنکه گزینه نامعتبر تعیین شده باشد، یکی از متغیرها یا توابع موجود نباشد، یا گزینه ‎ -f‎ برای یک نام متغیر به جای یک نام تابع به کار رفته باشد.

[bob in ~] readonly TUX=penguinpower

[bob in ~] TUX=Mickeysoft
bash: TUX: readonly variable
تمرین ها »
« متغیرهای آرایه‌ای
ترجمه محمود پهلوانی