آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

پارامترها

فصل سوم راهنمای BashGuide



پارامترها

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

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

  • نام: یک کلمه فقط متشکل ازحروف، ارقام، و خط‌زیر( runderscore ) است، که با یک حرف یا یک خط‌زیر شروع بشود. همچنین به عنوان یک شناسه به آن رجوع می‌شود.

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

    $ varname=vardata

این دستور مقدار vardata را به متغیری به نام varname اختصاص می‌دهد.

لطفاً توجه نمایید که نمی‌توانید از فاصله در اطراف علامت تخصیص = استفاده کنید. اگر این را بنویسید:

    # This is wrong!
    $ varname = vardata

BASH متوجه نخواهد شد که سعی می‌کنید یک تخصیص انجام دهید. تفکیک کننده varname را بدون = می‌بیند و با آن همچون نام یک فرمان رفتار می‌کند، و بعد هم = و vardata را به عنوان شناسه‌های آن عبور می‌دهد.

برای دستیابی به محتوای متغیرها، از بسط پارامتر استفاده می کنیم. یعنی جایگزینی پارامتر ذکر شده با مقدار آن، ترکیب به کار رفته به bash می‌گوید که شما می‌خواهید محتویات متغیر را به کار ببرید. پس از آن، BASH می‌تواند دستکاری‌های اضافه را روی نتایج انجام بدهد. درک این مفهوم به طورصحیح، بسیار با اهمیت می‌باشد، زیرا خیلی متفاوت با رفتار سایر زبانهای برنامه‌نویسی با متغیرها است!

برای تشریح آنکه بسط پارامتر چیست، بیایید از مثال استفاده کنیم:

    $ foo=bar
    $ echo "Foo is $foo"

وقتی Bash می‌خواهد کد شما را اجرا کند، اول دستور شما را با گرفتن نتیجه بسط پارامتر(‎ $foo‎)، و تعویض آن با محتوای foo، که bar است، تغییر می‌دهد. دستور اینطور می‌شود:

    $ echo "Foo is bar" 

اکنون Bash آماده اجرای فرمان است. اجرای آن یک جمله ساده در صفحه نمایش نشان می‌دهد.

    Foo is bar

اهمیت دارد بدانیم که بسط پارامتر موجب می‌شود که ‎$parameter‎ با محتوای آن تعویض گردد، به علت حالت زیر که به استناد فهم مبحث تفکیک شناسه در فصل قبل می‌باشد :

    $ song="My song.mp3"
    $ rm $song
    rm: My: No such file or directory
          rm: song.mp3: No such file or directory

چرا این عمل نمی‌کند؟ به علت آنکه Bash، جمله ‎$song‎ شما را با محتوای متغیر تعویض نموده، که My song.mp3 شده است، سپس تفکیک کلمه را انجام داده، و فقط پس از آن دستور را اجرا کرده است. و این مانند آن است که تایپ کرده باشید:

    $ rm My song.mp3

و بر اساس قواعد تفکیک کلمه، Bash گمان می‌برد که منظور شما My و song.mp3 به معنی دو فایل مختلف است، زیرا بین آنها فضای سفید وجود دارد و نقل‌قولی هم نشده است. چطور آن را رفع کنیم؟ به خاطر بسپاریم که در اطراف هر بسط پارامتر، نقل‌قول دوگانه را قرار بدهیم!

    $ rm "$song"


  • پارامترها: پارامترها داده‌هایی که می‌توانند به واسطه یک نشانه یا نام بازیابی بشوند را ذخیره می‌کنند.


ادامه دارد ....
نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد