اسکریپت ها
یک اسکریپت اساساً یک سلسله دستورات در داخل یک فایل است. BASH فایل را میخواند و دستورات را به ترتیب پردازش میکند. فقط وقتی به دستور بعدی میرود که اجرای دستور فعلی به پایان رسیده باشد، مگر اینکه دستور جاری به طور غیر همزمان اجرا گردیده باشد( در پسزمینه ). در مورد حالت اخیر خیلی نگران نباشید، در آینده بیشتر در باره آن خواهید آموخت.
در واقع هر مثالی که در این راهنما ملاحظه میکنید، دقیقاً میتواند به همان خوبی خطفرمان در اسکریپتها به کار برده شود.
ساخت یک اسکریپت آسان است. شما فقط یک فایل جدید ایجاد کنید و جمله زیر را در ابتدای آن قرار دهید:
#! /usr/bin/env bash
این سرآیند اطمینان ایجاد میکند که هرگاه اسکریپت اجرا شود، BASH به عنوان مفسر آن به کار خواهد رفت. ( روشهای معتبر دیگری نیز برای انجام این امر وجود دارد.) کاراکترهای
لطفاً با مثالهای موجود در اینترنب که از
همچنین، خواهشمند است از دادن پسوند گمراه کننده
و در ضمن اگر از Windows برای نوشتن اسکریپتهایتان استفاده میکنید، در هرحال از کاربرد Notepad برای نوشتن اسکریپت اجتناب نمایید. Microsoft Notepad فقط میتواند فایلهای با انتهای سطر به روش DOS ایجاد نماید. یعنی هر سطری که در notepad ایجاد میکنید با دو کاراکتر خاتمه مییابد: یک کاراکتر رفتن سر سطر و یک کاراکتر سطرجدید. BASH فقط سطرهایی که به یک کاراکتر سطرجدید خاتمه مییابند را میخواند. در نتیجه، کاراکتر رفتن سرسطرCarriage Return وقتی که نمیدانید آنجا هست باعث دردسر باور نکردنی شما خواهد شد( پیغام خطاهای خیلی مرموز). در هر حالت ازویرایشگر محبوبی مانند Vimو Emacsو kate و GEdit و GVIM یا xemacs استفاده کنید. اگر چنین نکنید، بعد قبل از اجرای اسکریپت لازم است تمام کاراکترهای CR( رفتن سرسطر) را پاک کنید.
وقتی که اسکریپت شما آماده شد، میتوانید آن را به صورت زیر اجرا کنید:
$ bash myscript
در این مثال، ما BASH را اجرا کرده و به او میگوییم اسکریپت ما را بخواند، سطر
به طور جایگزین میتوانید به اسکریپت خود مجوزهای اجرا بدهید. موفعی که این کار را انجام دهید، به جای فراخوانی BASH به طور دستی، میتوانید اسکریپت را به طور واقعی به عنوان یک برنامه کاربردی اجرا نمایید:
$ chmod +x myscript $ ./myscript
موقعی که اسکریپت به این روش اجرا میشود، سطر
بعضیها مایل هستند اسکریپتهای خود را در یک دایرکتوری شخصی نگهداری نمایند. دیگرانی مایل میباشند اسکریپتهایشان را در محلی که در متغیر
$ mkdir-p "$ HOME /bin" $ echo \'PATH=" /bin:$ HOME$ PATH "\'>> "$ HOME /.bashrc" $ exec bash
دستور اول، دایرکتوری با نام
تغییرات در DotFiles (از قبیل
در هر حال، اکنون میتوانیم اسکریپت خودمان را در دایرکتوری
$ mv myscript "$ HOME /bin" $ myscript
نکته:
وقتی شما در سرآیند اسکریپت نوع مفسر را تعیین میکنید، همچنین میتوانید زمان کوتاهی را برای شرح دادن عملکرد اسکریپت و شناسههای مورد نیاز آن صرف کنید:#! /usr/bin/env bash # # شناسه ها نام اسکریپت # # .توضیح کوتاهی در تشریح هدف اسکریپت # # Copyright [date], [name]
نکته:
میتوانید سرآیند را با یک کلمه از شناسههای اختیاری که میخواهید به مفسر ارسال کنید به کار ببرید. به عنوان مثال، شناسههای زیر اشکالزدایی تفصیلی را فعال میکنند:#! /bin/bash-xv -
لیکن دانستن آنکه Bash کجا نصب گردیده، لازم است، و همیشه هم در
/bin نیست. متأسفانه نمیتوانید از این یکی استفاده کنید:#! /usr/bin/env bash-xv به علت آنکه برای آن، دو کلمه در سرآیند لازم است. یونیکس آن را اجازه نمیدهد.میتوانید به جای آن اینطور بنویسید:
#! /usr/bin/env bash set -xv-
برای جزئیات بیشتر بخش اشکالزدایی را ملاحظه کنید.
سرآیند: سرآیند یک اسکریپت برنامه کاربردی که به عنوان مفسر عمل خواهد نمود، را تعیین میکند( ماننذ bash و sh و perl و ...). به طور مصطلح یک shebang نیز نامیده میشود-- یک عبارت عامیانه که از ترکیب hash (
# ) و bang(! ) میآید. شاید ببینید که کلمه shebang خیلی بیشتر از header استفاده میشود، بهویژه چون سرآیند چند معنی دیگر در زمینههای متفاوت دارد، حال آنکه shebang فقط یک معنی دارد.