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

سرور مجازی NVMe

روش استفاده از بیانیه مورد Bash

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


دستور 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دستور ” به اسکریپت شما اجازه می دهد تا حروف ورودی را نادیده بگیرد و بدون توجه به آن، آن را با حروف تطبیق دهد.

#!/صندوقچه/bash

پیشنهاد می‌کنیم بخوانید:  تفاوت بین منبع یابی و اجرای اسکریپت شل چیست؟

#کد برای نادیده گرفتن محدودیت‌های موردی
خرید -s nocasmatch

#بیانیه مورد
اکو “لطفا نام یک ماه را وارد کنید”
خواندن ماه
مورد $ ماه که در

ژانویه)
اکو 18 ژانویه روز ملی اصطلاحنامه است
;;

فوریه)
اکو 20 فوریه روز جهانی عدالت اجتماعی است
;;

مارس)
اکو “29 مارس روز واگن قرمز کوچک است.”
;;

آوریل)
اکو “اول آوریل روز جهانی مبارزه با بالش است”
;;
*)
اکو “هیچ تعطیلی در ماه مشخص شده شما پیدا نشد”
اساک

روش استفاده از بیانیه مورد Bash

در این اسکریپت، نام یک ماه را از کاربر گرفته و در متغیری به نام ماه ذخیره می کنیم. سپس با استفاده از عبارت case، ورودی را با چند ماه از پیش انتخاب شده مقایسه می کنیم و سپس تعطیلات مربوطه را نمایش می دهیم. می بینید که اگر کد در موارد تعریف شده مطابقت پیدا نکرد، پس از آن یک اکو در خارج از موارد برای نمایش یک پیام دیگر دارد. و پس از آن، ساختار کد case را با کلمه کلیدی “esac” می بندیم.

فایل اسکریپت را ذخیره کرده و از ویرایشگر نانو خارج شوید. اسکریپت را با استفاده از دستور زیر اجرا کنید:

$bash ماه.ش

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

می‌بینید که کد با تعطیلات مربوطه برای ورودی‌هایی که با موارد تهیه شده بود، پاسخ می‌دهد و زمانی که ورودی خارج از محدوده از موارد برنامه‌ریزی شده بود، با نامعلوم پاسخ می‌دهد.

زبان رسمی یک کشور

بیایید اسکریپتی بنویسیم که از موارد ترکیبی استفاده کند. برای این مثال، بیایید اسکریپتی بنویسیم که یک کشور را بگیرد و زبان رسمی آن کشور را چاپ کند.

#!/صندوقچه/bash

#کد برای نادیده گرفتن محدودیت‌های موردی
خرید -s nocasmatch

#بیانیه مورد
اکو “یک کشور را وارد کنید:”
خواندن کشور
اکو “زبان رسمی $COUNTRY است “
مورد $COUNTRY که در

آمریکا | لندن)

اکو “انگلیسی”

;;

برزیل | کشور پرتغال | مکزیک)

اکو “اسپانیایی”

;;

چین | سنگاپور | تایوان)

اکو “ماندارین”

;;

*)

اکو “ناشناخته”

;;
اساک

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

بیان موردی با اعداد صحیح

شما همچنین می توانید مواردی را ایجاد کنید که باید ورودی را با اعداد صحیح مطابقت دهید. بیایید یک اسکریپت ایجاد کنیم که ورودی را از کاربران در محدوده 1-10 بگیرد و سپس زوج یا فرد بودن عدد را نشان دهد.

#!/صندوقچه/bash

#بیانیه مورد
اکو “یک عدد از 1 تا 10 را وارد کنید:”
خواندن تعداد
مورد تعداد $ که در

1|3|5|7|9)
اکو “ورودی شما یک عدد فرد است”
;;

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

2|4|6|8|10)
اکو “ورودی شما یک عدد زوج است”
;;
*)
اکو “ورودی شما خارج از محدوده مورد نیاز است”
;;
اساک

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

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

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

می توانید با اعداد دیگر نیز تست کنید.

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

بیانیه مورد با حلقه For

اگر می‌خواهید چندین مقدار ورودی را در برابر موارد مجموعه خود بررسی کنید، می‌توانید از عبارت case در حلقه‌های for استفاده کنید. بیایید این مورد را با نوشتن یک اسکریپت نشان دهیم که تمام فایل‌های دایرکتوری فعلی را مرور می‌کند و نوع فایل آنها را نمایش می‌دهد.

#!/صندوقچه/bash

#برای هر فایل در فهرست فعلی
برای فایل که در $(ls)
انجام دادن

#پسوند فایل را استخراج کنید

افزونه=${فایل##*.}
مورد$Extensionکه در
ش)
اکو «فایل اسکریپت Bash: $File
;;

png)
اکو فایل تصویری PNG: $File
;;

txt)
اکو «فایل متنی: $File
;;
*)
اکو “پرونده ناشناخته”
;;

اساک
انجام شده

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

اجرای این اسکریپت از طریق هر فایل موجود در دایرکتوری فعال فعلی می گذرد و آن را همراه با نوع فایل آن (فقط مواردی که ما مشخص کرده ایم) نمایش می دهد. همانطور که می بینید، هنگام اجرای این اسکریپت که فقط یک فایل در دایرکتوری فعلی داریم، آن را به همراه پسوند نمایش می دهد.

روش استفاده از بیانیه مورد Bashروش استفاده از بیانیه مورد Bash

نتیجه

بازگشت به کد قدیمی‌تر و فهمیدن اینکه خط چه کاری انجام می‌دهد می‌تواند کار بسیار دشواری باشد، به خصوص اگر توسط شخص دیگری نوشته شده باشد. اضافه کردن به آن حتی سخت تر است. استفاده از عبارت case در اسکریپت های Bash می تواند خوانایی آن را از طریق نحو آسان برای شما بسیار آسان کند.

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

اگر در استفاده از بیانیه پرونده با مشکلی مواجه شدید، با ما در ارتباط باشید و ما با کمال میل به شما کمک خواهیم کرد.

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

زمان انتشار: 1402-12-29 20:03:04

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

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

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