از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از بیانیه مورد Bash
سرفصلهای مطلب
دستور case معمولا در Bash استفاده می شود که چندین گزینه برای انتخاب دارید. استفاده از آن به جای عبارات if-else تو در تو به خواندن و نگهداری اسکریپت های Bash شما کمک می کند.
عبارت Case Bash مشابه عبارت case از جاوا اسکریپت و C طراحی شده است. برخلاف دستور switch از C، دستور case Bash به محض اینکه یکی را پیدا کرد، جستجوی سایر موارد را متوقف می کند و عباراتی را که برای الگو نوشته شده است تکمیل می کند.
در این راهنما، روش استفاده از دستور Bash case را با استفاده از دو مثال و چند سناریو در اوبونتو 22.04 توضیح خواهیم داد.
نحو بیانیه مورد
اگر می خواهید روش استفاده از دستور case را بدانید، باید نحو را درک کنید. به نظر می رسد این است:
الگوی 1)
دستورات
;;
الگوی 2)
دستورات
;;
الگوN)
دستورات
;;
*)
دستورات
;;
اساک
بیایید آن را تجزیه کنیم:
- ضروری است که عبارت را با کلمه کلیدی “case” باز کنید و آن را با کلمه کلیدی “esac” ببندید.
- برای پایان دادن به یک الگو از براکت بستن “)” استفاده می کنیم.
- الگوهای حاوی دستورات به عنوان بند شناخته می شوند و با “;;” ختم می شوند.
- شما می توانید از “*” (ستاره) برای تعریف یک مورد پیش فرض استفاده کنید.
- هنگامی که دستور case متغیر ورودی را با الگوهای تعریف شده مطابقت می دهد، پس از تطبیق، مجموعه کد دستورات مربوطه تا دو نقطه ویرگول اجرا می شود.
- اگر می خواهید یک فرمان برای چندین الگو اجرا شود، می توانید از عملگر لوله برای قرار دادن الگوها در کنار هم استفاده کنید:
الگوی 1| الگوی 2)
دستورات
;;
الگوی 3| الگوی 4)
دستورات
;;
حال، برای درک بهتر این نحو، به چند مثال نگاهی بیندازیم.
تعطیلات در یک ماه
برای مثال اول، اجازه دهید یک اسکریپت بنویسیم که یک ماه به عنوان ورودی از کاربر طول می کشد و با یک تعطیلات بین المللی که در آن ماه است پاسخ می دهد. “shopt -s nocasmatchدستور ” به اسکریپت شما اجازه می دهد تا حروف ورودی را نادیده بگیرد و بدون توجه به آن، آن را با حروف تطبیق دهد.
#کد برای نادیده گرفتن محدودیتهای موردی
خرید -s nocasmatch
#بیانیه مورد
اکو “لطفا نام یک ماه را وارد کنید”
خواندن ماه
مورد $ ماه که در
ژانویه)
اکو 18 ژانویه روز ملی اصطلاحنامه است
;;
فوریه)
اکو 20 فوریه روز جهانی عدالت اجتماعی است
;;
مارس)
اکو “29 مارس روز واگن قرمز کوچک است.”
;;
آوریل)
اکو “اول آوریل روز جهانی مبارزه با بالش است”
;;
*)
اکو “هیچ تعطیلی در ماه مشخص شده شما پیدا نشد”
اساک
در این اسکریپت، نام یک ماه را از کاربر گرفته و در متغیری به نام ماه ذخیره می کنیم. سپس با استفاده از عبارت case، ورودی را با چند ماه از پیش انتخاب شده مقایسه می کنیم و سپس تعطیلات مربوطه را نمایش می دهیم. می بینید که اگر کد در موارد تعریف شده مطابقت پیدا نکرد، پس از آن یک اکو در خارج از موارد برای نمایش یک پیام دیگر دارد. و پس از آن، ساختار کد case را با کلمه کلیدی “esac” می بندیم.
فایل اسکریپت را ذخیره کرده و از ویرایشگر نانو خارج شوید. اسکریپت را با استفاده از دستور زیر اجرا کنید:
میبینید که کد با تعطیلات مربوطه برای ورودیهایی که با موارد تهیه شده بود، پاسخ میدهد و زمانی که ورودی خارج از محدوده از موارد برنامهریزی شده بود، با نامعلوم پاسخ میدهد.
زبان رسمی یک کشور
بیایید اسکریپتی بنویسیم که از موارد ترکیبی استفاده کند. برای این مثال، بیایید اسکریپتی بنویسیم که یک کشور را بگیرد و زبان رسمی آن کشور را چاپ کند.
#کد برای نادیده گرفتن محدودیتهای موردی
خرید -s nocasmatch
#بیانیه مورد
اکو “یک کشور را وارد کنید:”
خواندن کشور
اکو “زبان رسمی $COUNTRY است “
مورد $COUNTRY که در
آمریکا | لندن)
اکو “انگلیسی”
;;
برزیل | کشور پرتغال | مکزیک)
اکو “اسپانیایی”
;;
چین | سنگاپور | تایوان)
اکو “ماندارین”
;;
*)
اکو “ناشناخته”
;;
اساک
بیان موردی با اعداد صحیح
شما همچنین می توانید مواردی را ایجاد کنید که باید ورودی را با اعداد صحیح مطابقت دهید. بیایید یک اسکریپت ایجاد کنیم که ورودی را از کاربران در محدوده 1-10 بگیرد و سپس زوج یا فرد بودن عدد را نشان دهد.
#بیانیه مورد
اکو “یک عدد از 1 تا 10 را وارد کنید:”
خواندن تعداد
مورد تعداد $ که در
“1” | “3” | “5” | “7” | “9”)
اکو “ورودی شما یک عدد فرد است”
;;
“2” | “4” | “6” | “8” | “10”)
اکو “ورودی شما یک عدد زوج است”
;;
*)
اکو “ورودی شما خارج از محدوده مورد نیاز است”
;;
اساک
اجرای این اسکریپت خروجی زیر را به شما می دهد:
می توانید با اعداد دیگر نیز تست کنید.
بیانیه مورد با حلقه For
اگر میخواهید چندین مقدار ورودی را در برابر موارد مجموعه خود بررسی کنید، میتوانید از عبارت case در حلقههای for استفاده کنید. بیایید این مورد را با نوشتن یک اسکریپت نشان دهیم که تمام فایلهای دایرکتوری فعلی را مرور میکند و نوع فایل آنها را نمایش میدهد.
#برای هر فایل در فهرست فعلی
برای فایل که در $(ls)
انجام دادن
#پسوند فایل را استخراج کنید
افزونه=${فایل##*.}
مورد “$Extension” که در
ش)
اکو «فایل اسکریپت Bash: $File”
;;
png)
اکو فایل تصویری PNG: $File”
;;
txt)
اکو «فایل متنی: $File”
;;
*)
اکو “پرونده ناشناخته”
;;
اساک
انجام شده
اجرای این اسکریپت از طریق هر فایل موجود در دایرکتوری فعال فعلی می گذرد و آن را همراه با نوع فایل آن (فقط مواردی که ما مشخص کرده ایم) نمایش می دهد. همانطور که می بینید، هنگام اجرای این اسکریپت که فقط یک فایل در دایرکتوری فعلی داریم، آن را به همراه پسوند نمایش می دهد.
نتیجه
بازگشت به کد قدیمیتر و فهمیدن اینکه خط چه کاری انجام میدهد میتواند کار بسیار دشواری باشد، به خصوص اگر توسط شخص دیگری نوشته شده باشد. اضافه کردن به آن حتی سخت تر است. استفاده از عبارت case در اسکریپت های Bash می تواند خوانایی آن را از طریق نحو آسان برای شما بسیار آسان کند.
همانطور که در مثالها نشان داده شد، میتوانید آن را با رشتهها، رشتههای متعدد، اعداد صحیح و حلقهها و بسیاری دیگر استفاده کنید. شما حتی می توانید کدهای خروجی برنامه خود را با عبارات case کنترل کنید. این بسیار همه کاره است.
اگر در استفاده از بیانیه پرونده با مشکلی مواجه شدید، با ما در ارتباط باشید و ما با کمال میل به شما کمک خواهیم کرد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-29 20:03:04