راه و روشها
فهرست مطالب
1. انتخاب پوسته شما
اولین کاری که باید قبل از شروع به نوشتن یک اسکریپت پوسته یا هر نوع اسکریپت یا برنامهای مشابه آن، انجام بدهید، برشمردن احتیاجات و اهداف آن اسکریپت است. سپس ارزیابی آنچه، بهترین ابزار برای انجام آن اهداف است.
BASH ممکن است برای یادگیری و نوشتن در آن آسان باشد، اما همیشه مناسب انجام کار نیست.
در مجموعه ابزارهای اساسی، تعداد بسیاری ابزار موجود است که میتواند به شما کمک کند. اگر شما فقط به AWK نیاز داشته باشید، نباید یک اسکریپت شل ایجاد کنید که آن را فراخوانی کند. فقط یک اسکریپت AWK ایجاد کنید. اگر به بازیابی داده از یک فایل HTMLیا XML به یک روش معتبر نیاز دارید، نیز Bash ابزار اشتباهی برای انجام آن کار است. باید به جای آن XPath/XSLT را به کار ببرید، یا یک زبانی که کتابخانه معتبری برای تجزیه XML یا HTML دارد.
اگر تصمیم گرفتید که اسکریپت پوسته آن ابزاری است که شما میخواهید، اول این سؤالها را از خود بپرسید:
در یک آینده قابل پیشبینی، آیا ممکن است اسکریپت شما در محیطی که Bash به طور پیشفرض در دسترس نیست، مورد احتیاج باشد؟
اگر اینطور است، پس به جای آن sh را در نظر بگیرید. sh یک شل POSIX است و ویژگیهایش در هر پوسته موافق با استاندارد POSIX، در دسترس میباشد. به این واقعیت تکیه کنید که هر سیستم POSIX قادر به اجرای اسکریپت شما خواهد بود. شما باید توازنی بین لزوم قابلیت حمل و عدم استفاده از قابلیتهای ویژه Bash برقرار کنید.
به خاطر داشته باشید که این راهنما شامل sh نمیشود! صفحه bashism پیشنهادهایی دارد، اما کامل نیست.
- آیا اطمینان دارید که در تمام محیطهایی که اسکریپت را اجرا میکنید یا ممکن است در آینده بخواهید اجرا کنید، Bash 3.x (یا 4.x) در دسترس شما خواهد بود؟
اگر نه، باید خود را فقط به ویژگیهای Bash 2.x محدود نمایید.
اگر سؤلات فوق انتخاب شما را محدود نمیکند، از تمام ویژگیهای Bash که لازم دارید، استفاده کنید، توجه کنید که کدام نگارش Bash برای اجرای اسکریپت شما لازم است.
استفاده از Bash نگارش 3 یا بالاتر به معنای آنست که میتوانید از شیوههای اسکریپتنویسی کهنه و قدیمی که به دلایل بسیار خوبی با موارد خیلی بهتری جایگزین شدهاند، اجتناب نمایید.
- از اسکریپتهای نمونهای که در Web میبینید، بدون درک کامل عملکرد آنها دوری کنید. اسکریپتهایی که در Web پیدا میکنید اکثراً به نوعی ناقص هستند. از آنها کپی paste نکنید.
همواره از شبانگ صحیح استفاده کنید. اگر در حال نوشتن اسکریپت هستید، قرار دادن
#!/usr/bin/env bash در بالای اسکریپت لازم است. از قلم انداختن این سرآیند یا استفاده از سرآیند #!/bin/sh اشتباه است. در حالت اخیر، شما دیگر قادر به استفاده از ویژگیهای Bash نیستید. محدود به اسکریپتنویسی استاندارد POSIX میشوید(حتی اگر /bin/sh شما یک پیوند به Bash باشد).موقع نوشتن اسکریپتهای پوسته، از دستور [ استفاده نکنید. Bash جایگزین بسیار بهتری دارد:
[[ . کلمهکلیدی [[ در Bash از بسیاری جهات قابل اعتمادتر است و به هیچ وجه مزیتی برای چسبیدن به نوع عتیقه آن وجود ندارد. همچنین مقدار زیادی از ویژگیهای فراهم شده برای [[ که در [ وجود ندارد( مانند انطباق الگو) را از دست میدهید.وقت آنست که `...` نیز به فراموشی سپرده شود. این مورد با ساختار بسط سازگار نیست. به جای آن از
$(...) استفاده کنید.و به واسطه قدرت شگرف، \"کاربرد بیشتر نقلقولها!\" رشتهها و بسط پارامترهای خود را از تفکیک کلمات محافظت کنید. اگر به طور صحیح نقلقولی نکنید، تفکیک کلمات نوزادان شما را میخورد.
به جای استفاده از sed یا cut برای کار با رشتههای ساده در Bash، استفاده از بسط پارامترها را بیاموزید. اگر میخواهید پسوند نام فایل را حذف کنید، به جای
`echo \"$ یا بعضی دایناسورهای دیگر، از filename \" | sed \'s/ \\.[^.]*$//\' `$ استفاده کنید.{ filename %.*} به جای استفاده از expr برای انجام محاسبات ساده، از حساب داخلی استفاده کنید، مخصوصاً وقتیکه فقط مقدار متغیری افزایش مییابد. اگر اسکریپتی میخوانید که
x =`expr $ را به کار برده، این چیزی نیست که شما از آن تقلید کنید.x +1 `