وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

باش Getopts

0 2
زمان لازم برای مطالعه: 4 دقیقه


گاهی اوقات لازم است آرگومان ها و گزینه های خط فرمان را در آن بخوانیم bash اسکریپت ها آرگومان های خط فرمان را می توان به راحتی توسط متغیرهای آرگومان خواند. اما برای خواندن هم آرگومان های خط فرمان و هم گزینه ها، bash از یک دستور داخلی «getopts» استفاده کرد. این دستور می تواند برای تجزیه گزینه های کوتاه مانند ‘-a’ یا ‘-1’ و گزینه های طولانی مانند ‘–package-name’ استفاده شود. روش استفاده از دستور getopts برای تجزیه آرگومان ها و گزینه های خط فرمان در این آموزش با استفاده از مثال های مختلف نشان داده شده است.

نحو:

می گیرد نام optstring [args]

گزینه ها:

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

برچسب بزنید شرح
-o یا –گزینه ها گزینه تک شخصیتی را شناسایی کنید.
-l یا -longoptions گزینه های چند شخصیتی را شناسایی کنید.
-n یا –name خطاهای ناشی از دستور getopts را گزارش کنید
-q یا – آرام غیرفعال کردن گزارش خطا
-T یا -تست نسخه getopts را تست کنید
-a یا -alternative اجازه گزینه طولانی با “-” تکی

مثال-1: استفاده از تک گزینه

این مثال استفاده بسیار ساده از دستور getopts را نشان می دهد. ایجاد یک bash فایلی با نام getopts1.sh با کد زیر برای تست کد. در اینجا حلقه while برای گزینه دستور getopts ادامه خواهد یافت. Case statement این گزینه را بررسی می کند. اگر گزینه ‘c’ باشد، اسکریپت خواهد شد print ‘رنگ مورد علاقه من آبی است’. اگر گزینه “f” باشد، اسکریپت خواهد شد print “غذای مورد علاقه من بستنی است”. اگر گزینه ‘-m’ باشد، اسکریپت خواهد شد print فیلم مورد علاقه من تایتانیک است. برای هر مقدار گزینه دیگر، “شما باید استفاده کنید: [-c] یا [-f] یا [-m]” اراده print.

#!/صندوقچه/bash
# گزینه را بخوانید و در متغیر $option ذخیره کنید
در حالی که می گیرد “cfm” گزینه؛ انجام دادن
مورد ${گزینه} که در

ج ) #برای گزینه ج
echo “رنگ مورد علاقه من آبی است”
;;

f ) #برای گزینه f
echo “غذای مورد علاقه من بستنی است”
;;

متر ) #برای گزینه m
echo “فیلم مورد علاقه من تایتانیک است”
;;

) #برای گزینه نامعتبر
echo “شما باید استفاده کنید: [-c] یا [-f] یا [-m]”
;;
اساک
انجام شده

پیشنهاد می‌کنیم بخوانید:  دستور خواندن Bash

اسکریپت را با استفاده از چهار گزینه ‘-c’، ‘-f’، ‘-m’ و ‘-k’ اجرا کنید.

$ bash getopts1.sh

$ bash getopts1.sh

$ bash getopts1.sh -m

$ bash getopts1.sh -k

خروجی:

باش Getopts

مثال-2: استفاده از گزینه با یک آرگومان واحد

این مثال استفاده از دستور getopts را با آرگومان نشان می دهد. ایجاد یک bash فایلی با نام getopts2.sh با کد زیر برای تست کد. در اینجا، ‘:’ با ‘p’ استفاده می شود تا مشخص شود که دستور با گزینه آرگومان می گیرد. فیلمنامه خواهد شد print مقدار آرگومان با رشته دیگر اگر آرگومان با گزینه ‘-p’ در زمان اجرا ارائه شود. اگر گزینه ای به جای ‘-p’ ارائه شود، یک پیام خطا با مقدار گزینه نشان می دهد. اگر گزینه ‘-p’ بدون هیچ آرگومانی ارائه شود، پیام خطای دیگری ارائه خواهد شد print.

#!/صندوقچه/bash
در حالی که می گیرد “پ:” انتخاب کردن انجام دادن
مورد ${opt} که در

پ )#print مقدار آرگومان
echo “من دوست دارم $OPTARG برنامه نویسی”
;;

)

#print خطای گزینه
echo “گزینه نامعتبر: $OPTARG 1>&2
;;

: )

#print خطای آرگومان
echo “گزینه نامعتبر: $OPTARG استدلال می خواهد” 1>&2
;;
اساک
انجام شده

اسکریپت را با گزینه -p و مقدار آرگومان اجرا کنیدbash’، تنها با گزینه -p و با گزینه -t.

$ bash getopts2.sh bash

$ bash getopts2.sh

$ bash getopts2.sh -t

خروجی:

باش Getoptsباش Getopts

مثال-3: استفاده از گزینه با چندین آرگومان

این مثال کاربردهای دستور getopts را با آرگومان های متعدد نشان می دهد. ایجاد یک bash اسکریپت به نام grtopts3.sh با کد زیر برای تست اسکریپت. با توجه به اسکریپت، مقادیر آرگومان جدا شده با کاما از خط فرمان ارائه خواهد شد.

در اینجا، گزینه ‘-f’ و متغیر IFS برای تقسیم آرگومان ها استفاده می شود و در یک آرایه به نام $numarr ذخیره می شود. اگر آرگومان های جدا شده با کاما ارائه شوند، این کار ارائه خواهد شد print تعداد کل آرگومان ها دو گزینه از دستور پشتیبانی می کند. مجموع مقادیر آرگومان محاسبه و چاپ می شود اگر گزینه ‘-a’ با آرگومان ها ارائه شود. در صورتی که گزینه ‘-m’ آرگومان ها را ارائه دهد، ضرب مقادیر آرگومان محاسبه و چاپ می شود.

#!/صندوقچه/bash
در حالی که می گیرد “صبح:” انتخاب کردن انجام دادن
تنظیم ; IFS=“،”
numarr=(2 دلار)
echo “تعداد کل آرگومان ها = ${#numarr[@]}

پیشنهاد می‌کنیم بخوانید:  دستور Grep در لینوکس

مورد $opt که در

آ ) نتیجه=0
برای من که در ${numarr[@]}; انجام دادن
((نتیجه=$نتیجه+$i))
انجام شده
echo «مجموع همه استدلال ها = $نتیجه ;;

متر ) نتیجه=1
برای من که در ${numarr[@]}; انجام دادن
((نتیجه=$نتیجه*$i))
انجام شده
echo «ضرب همه استدلال ها = $نتیجه ;;
* ) echo “گزینه یا آرگومان نامعتبر”
خروج 1
اساک
انجام شده

اسکریپت ها را با گزینه ‘-a’ و سه آرگومان، با گزینه ‘-m’ و سه آرگومان و گزینه ‘-t’ را بدون هیچ آرگومان اجرا کنید.

$ bash getopts3.sh 3،2،5

$ bash getopts3.sh -m 3،2،5

$ bash getopts3.sh -t

خروجی:

باش Getoptsباش Getopts

مثال-4: استفاده از چندین گزینه و آرگومان

این مثال استفاده از دستور getopts را با چندین گزینه و چندین آرگومان نشان می دهد. ایجاد یک bash فایلی به نام getopts4.sh با کد زیر برای تست مثال. در اینجا، دو گزینه با دو آرگومان جداگانه کار خواهند کرد. اگر هیچ یک از گزینه ها ارائه نمی شود، آن را ارائه می دهد print یک پیام خطا

#!/صندوقچه/bash
در حالی که می گیرد “n:m:” انتخاب کردن انجام دادن
مورد $opt که در

n)

#خواندن استدلال اول
echo “اسم دانش آموز است $OPTARG >&2
;;

متر)

#خواندن استدلال دوم
echo ” و علائم است $OPTARG >&2
;;
*)

#پیام خطای چاپ
echo گزینه یا آرگومان نامعتبر است $OPTARG
;;
اساک
انجام شده

وقتی اسکریپت با گزینه ‘-n’ با ‘Ella’ و ‘-m’ با 85 اجرا شود، دو عبارت case درست خواهد بود و print دو خروجی هنگامی که اسکریپت تنها با گزینه ‘-n’ با ‘Ella’ اجرا می شود، تنها یک عبارت case درست خواهد بود و print یک خروجی هنگامی که اسکریپت توسط گزینه ‘-p’ اجرا می شود، یک پیام خطا نمایش داده می شود print.

$ bash getopts4.sh -n الا -m 85

$ bash getopts4.sh -n الا
$ bash getopts4.sh الا

باش Getoptsباش Getopts

نتیجه

کاربردهای اصلی دستور ‘getopts’ در این آموزش با استفاده از مثال های بالا نشان داده شده است. امیدواریم پس از تمرین این آموزش بتوانید از گزینه ها و آرگومان های خط فرمان در خود استفاده کنید bash اسکریپت

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 22:27:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید