شروع اسکریپتنویسی با Bash
در ادامه قصد داریم یک اسکریپت Bash خیلی ساده بنویسیم که این وظیفه را دارا است تا یک پیام دوخطی را روی صفحهٔ ترمینال بهنمایش درآورد:
#!/bin/bash echo "HELLO" echo "WORLD"
دستورات فوق را بااستفاده از ادیتور دلخواه خود در فایلی تحتعنوان script.sh ذخیره میسازیم؛ حال میبایست این فایل را اصطلاحاً Executable (قابل اجرا) کنیم و برای این منظور، دستور زیر را اجرا میکنیم:
$ chmod +x script.sh
البته توجه داشته باشیم که اگر این فایل را روی دسکتاپ ایجاد کردهایم، ابتدا میبایست بااستفاده از دستور cd به مسیر دسکتاپ رفته سپس دستور فوق را اجرا کنیم. حال با تایپ کردن دستور script.sh/. و یا دستور زیر، کلمات HELLO و WORLD روی صفحهٔ ترمینال نمایش داده میشوند:
bash script.sh HELLO WORLD
همواره این نکته را بهخاطر داشته باشیم که اگر بخواهیم به روش script.sh/. اسکرپیت خود را اجرا کنیم اما درعینحال فراموش کنیم که این فایل را قابلاجرا کنیم، با ارور زیر مواجه خواهیم شد:
$ bash: ./script.sh: Permission denied
مثالی تعاملی از اسکریپتنویسی با Bash
در اسکریپتی که در ادامه خواهیم نوشت، از یوزر خواسته میشود تا مقداری را وارد کند سپس این مقدار در متغیری موقتی تحتعنوان sname ذخیره میشود که از این پس، ما میتوانیم از طریق sname$ به مقدار این متغیر دسترسی پیدا کنیم. برای این منظور، فایلی تحتعنوان ioscript.sh در ادیتور دلخواه خود -همچون Gedit- ساخته و اسکریپتهای زیر را داخل آن مینویسیم:
#!/bin/bash # Interactive reading of variables echo "ENTER YOUR NAME" read sname # Display of variable values echo $sname
همانطور که پیش از این گفتیم، ابتدا باید این فایل را بااستفاده از دستور chmod +x ioscript.sh قابلاجرا کنیم؛ حال با اجرای دستور زیر، این اسکریپت Run (ران بهمعنی اجرا) میشود و جملهٔ ENTER YOUR NAME بهمعنی «نام خود را وارد کنید» درمعرض دید کاربر قرار میگیرد. کاربر اسمش را وارد کرده و اینتر میکند و میبینیم که مقدار وارد شده توسط کاربر نمایش داده میشود:
./ioscrpt.sh ENTER YOUR NAME Behzad Behzad
در تفسیر اسکریپت فوق بایستی گفت که در خط اول مسیر مفسر Bash روی سیستم نوشته شده است (بهخاطر داشته باشیم که در اسکریپتنویسی باید bash با حرف ابتدایی کوچک نوشته شود)؛ در خط دوم کامنتی داریم تحتعنوان Interactive reading of variables بهمعنی «بازخوانی تعاملی متغیرها» و سپس در خط سوم دستور “echo “ENTER YOUR NAME را نوشتهایم که این وظیفه را دارا است عبارت ENTER YOUR NAME را درمعرض دید کاربر قرار دهد.
در ادامه، بااستفاده از دستور read sname مقداری که کاربر در ترمینال وارد میکند را دریافت کرده و این مقدار را در فضایی موقتی ذخیره میسازیم و درنهایت پس از گذاشتن یک کامنت تحتعنوان Display of variable values بهمعنی «نمایش مقادیر متغیر» و نمایش متغیر sname$ با دستور echo، هرآنچه کاربر وارد کرده باشد را مجدد درمعرض دیدش قرار میدهیم.