فهرست مطالب
پارامترها
پارامترها محلهای نامگذاری شده در حافظه هستند که شما میتوانید دادهها را در آنجا ذخیره کنید، آنها به طور معمول داده رشتهای را ذخیره میکنند، اما میتوانند برای ذخیره آرایهها یا اعداد صحیح نیز استفاده شوند.
پارامترها دو دسته هستند: متغیرها و پارامترهای خاص. پارامترهای خاص فقطخواندنی هستند، توسط پوسته مقداردهی اولیه میشوند، و برای تعامل با برخی وضعیتهای داخلی استفاده میشوند. متغیرها پارامترهایی هستند، که خودتان میتوانید آنها را ایجاد و بههنگام سازی نمایید. نام متغیرها مطابق قواعد زیر محدود میگردد:
نام: یک کلمه فقط متشکل ازحروف، ارقام، و خطزیر( runderscore ) است، که با یک حرف یا یک خطزیر شروع بشود. همچنین به عنوان یک شناسه به آن رجوع میشود.
برای ذخیره داده در یک متغیر، از ترکیب دستوری تخصیص به شکل زیر استفاده میکنیم:
$varname = vardata
این دستور مقدار
لطفاً توجه نمایید که نمیتوانید از فاصله در اطراف علامت تخصیص
# This is wrong! $varname = vardata
BASH متوجه نخواهد شد که سعی میکنید یک تخصیص انجام دهید. تفکیک کننده
برای دستیابی به محتوای متغیرها، از بسط پارامتر استفاده می کنیم. یعنی جایگزینی پارامتر ذکر شده با مقدار آن، ترکیب به کار رفته به bash میگوید که شما میخواهید محتویات متغیر را به کار ببرید. پس از آن، BASH میتواند دستکاریهای اضافه را روی نتایج انجام بدهد. درک این مفهوم به طورصحیح، بسیار با اهمیت میباشد، زیرا خیلی متفاوت با رفتار سایر زبانهای برنامهنویسی با متغیرها است!
برای تشریح آنکه بسط پارامتر چیست، بیایید از مثال استفاده کنیم:
$foo = bar $ echo "Foo is $foo"
وقتی Bash میخواهد کد شما را اجرا کند، اول دستور شما را با گرفتن نتیجه بسط پارامتر(
$ echo "Foo is bar"
اکنون Bash آماده اجرای فرمان است. اجرای آن یک جمله ساده در صفحه نمایش نشان میدهد.
Foo is bar
اهمیت دارد بدانیم که بسط پارامتر موجب میشود که
$song = "My song.mp3 " $ rm$ song rm: My: No such file or directory rm: song.mp3: No such file or directory
چرا این عمل نمیکند؟ به علت آنکه Bash، جمله
$ rm My song.mp3
و بر اساس قواعد تفکیک کلمه، Bash گمان میبرد که منظور شما My و song.mp3 به معنی دو فایل مختلف است، زیرا بین آنها فضای سفید وجود دارد و نقلقولی هم نشده است. چطور آن را رفع کنیم؟ به خاطر بسپاریم که در اطراف هر بسط پارامتر، نقلقول دوگانه را قرار بدهیم!
$ rm "$ song "
پارامترها: پارامترها دادههایی که میتوانند به واسطه یک نشانه یا نام بازیابی بشوند را ذخیره میکنند.