مدیریت پارامترهای ارسالی به اسکریپت‌های بش با دستور getopts

در برنامه‌های خط فرمانی cli کاربر با استفاده از پارامتر با برنامه و یا اسکریپت ارتباط برقرار می‌کنه بنابراین یکی از اولین قدمهای نوشتن یک اسکریپت حرفه‌ای اینه که پارامترهای ارسال شده به اسکریپت رو بصورت کاملا حرفه‌ای بررسی کنید. دستور getopts یکی از برنامه‌های خیلی خوب برای مدیریت پارامترهای ارسالی به اسکریپته که به زیباترین شکل ممکن آپشن‌های را بررسی و پارس میکنه. اما قبل از بررسی این دستور بهتره تا حدودی با پارامترهای ارسالی به برنامه‌های cli آشنا بشیم.
در لینوکس پارامترهایی که به یک دستور یا اسکریپت بش ارسال می‌کنیم به سه صورت میتونه باشه.
آپشن‌های تک کاراکتری ( single-character options) مثل ‎-a در دستور ls
آپشن‌های طولانی سبگ گنو (GNU-style long option) مثل ‎- -all
آپشن‌های طولانی سبک XF86 یا (XF86-style long options) مثل ‎-all

برنامه getops قادر به بررسی آپشن‌های طولانی سبگ گنو و آپشن‌های طولانی سبک XF86 نیست و فقط میتونه پارامترهای رو به شکل تک حرفی ببینه.

این مثالها رو در نظر بگیرید.

 

همونطور که می‌دونید این چهار دستور یک نتیجه رو باید نشان بده یعنی چه آرگومان‌ها به هم چسبیده باشند و چه جدا باشند نتیجه باید ثابت باشه! خوب کاملا مشخصه که بررسی حالت‌های مختلفی که ممکنه پارامترها به یک دستور ارسال بشه کار فوق العاده سختی می‌تونه باشه و اینجاست که دستور getopts به کمک ما میاد.

این کد رو یک نگاهی بهش بکنید تا ببینیم چجوری باید از getopts استفاده کنیم.

از اونجا که پارامترهای ارسالی به اسکریپت ما ممکنه بیش از یکی باشه از یک حلقه while استفاده می‌کنیم تا تک تک پارامترها رو بررسی کنیم

عبارت abc:d:‎  به getopts میگه که پارامترهای اسکریپت اینهاست

  • -a
  • -b
  • -c param
  • -d param

حرف a به تنهایی حرف b به تنهایی حرف c به همراه یک پارامتر و بلاخره حرف d به همراه یک پارامتر اضافه!  توجه دارید که هر دو نقطه جلوی یک پارامتر به معنی یک پارامتر اضافه است! در هر بار اجرای getopts یکی از پارامترهای ارسالی به اسکریپت خونده میشه و توی متغییر OPTION ریخته میشه و ما با استفاده از یک حلقه case این پارامترها رو دونه دونه بررسی می‌کنیم!  اگه پارامتر اضافه‌ای داشته باشیم توی متغییر OPTARG ریخته میشه.

اگر اسکریپت رو با همراه پارامترها اجرا کنیم نتیجه این خواهد بود.

 

این نوشته در اپن سورس, کامپیوتر, لینوکس, نرم افزار آزاد, نرم‌افزار آزاد ارسال و , , , , , , , , , برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *