از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
استفاده از Regex در عبارات Bash Case
سرفصلهای مطلب
مثال 01:
بسیاری از اوقات، کاربران استفاده از regex (عبارات منظم) را در عبارات “case” دشوار می دانستند زیرا “regex” هرگز در دستورات case کار نمی کند. به عنوان یک جایگزین، “grep” همیشه به جای یک عبارت case برای استفاده regex در استفاده شده است bash. ما یک مثال ساده خواهیم دید تا ببینیم چگونه grep و case در هنگام استفاده از عبارات منظم کار می کنند. بنابراین، باز کنید terminal console قبل از حرکت بیشتر از طریق میانبر “Ctrl+Alt+T”. پس از باز کردن terminal، باید یک جدید ایجاد کنید bash فایل با پرس و جو لمسی.
پس از ایجاد bash فایل را باز کنید تا به آن اضافه شود bash کد برای این کار، عبارت زیر را امتحان کنید.
را bash فایل در ” باز شده استGNU ویرایشگر». اضافه کردن bash کد نشان داده شده در زیر همانطور که در داخل است bash فایل. این کد در مورد استفاده از grep بحث خواهد کرد در حالی که عبارت منظم در آن استفاده شده است. اضافه کردن bash ابتدا پسوند ما یک متغیر “s” را با فاصله و رشته ها به عنوان مقدار آن اعلام کرده ایم. اولین دستور echo این پیام را نشان می دهد که regex با “grep” در این کد مثال استفاده شده است. در خط بعدی از دستور echo برای نمایش متغیر “s” استفاده کرده ایم. در حالی که grep، از دستور برای جستجوی متن “word1” از متغیر “s” استفاده شده است که با عبارت منظم داده شده در تصویر مطابقت دارد. کد خود را ذخیره کنید و آن را از طریق “Ctrl+S” و “Ctrl+X” پشت سر هم بگذارید.
وقت آن است که ما را اجرا کنیم bash فایل کنید تا نتایج آن را ببینید. بنابراین، ما استفاده کرده ایم bash دستور اجرای فایل test.sh. خروجی نتیجه متغیر “s” به همراه پیام “with grep” را نشان می دهد. این نشان می دهد که regex کاملاً در عبارات grep کار می کند.
بیایید این بار همان خروجی را برای دستورات case ایجاد کنیم. بنابراین، خود را باز کنید bash با استفاده از پرس و جوی “nano” دوباره در ویرایشگر فایل کنید. اضافه کردن bash پسوند و یک متغیر “s” با مقداری تعریف کنید. ما از عبارت “echo” برای توضیح بیشتر استفاده کرده ایم روی با استفاده از بیانیه مورد در حال حاضر. هنگام جستجوی متغیر “s” در عبارت منظم تعریف شده در کد، دستور case را شروع کرده ایم. وقتی رشته منطبق را پیدا کرد، باید متغیر “s” را در آن چاپ کند terminal. سپس، بیانیه مورد با کلمه کلیدی “esac” پایان یافته است.
در حین اجرای bash فایل در داخل terminal، به نظر می رسد که یک خطای دستوری با گفتن “خطای نحوی در نزدیکی توکن غیرمنتظره ایجاد می کند. [expression]”. این به سادگی نشان می دهد که عبارت منظم با عبارت case کار نمی کند.
مثال 02:
بیایید نگاهی به نمونه دیگری از معمولی بیندازیم bash اصطلاحات. این بار برای بررسی عملکرد regex از یک عبارت منظم کمی متفاوت استفاده خواهیم کرد. از سوی دیگر، regex را در دستور “if” به جای “گزاره مورد” خواهیم دید. بنابراین، فایل “test.sh” را دوباره باز کنید.
همانطور که فایل در حال حاضر باز است، ما آن را اضافه کرده ایم bash پسوند و با استفاده از عبارت “if” برای شروع شرط. در عبارت “if” به ما اجازه نمی دهد که هیچ عبارت منظمی را اضافه کنیم. به همین دلیل است که از عبارت “=~” برای نمونه سازی regex در کد استفاده کرده ایم. در این شرط، regex را با استفاده از “$” به عنوان یک عبارت منظم معتبر اضافه کردهایم. هنگامی که کاراکتر اضافه شده با شرایط عبارت منظم در عبارت “if” مطابقت دارد، باید آن عبارت را در متغیر “n” ذخیره کرده و “Valid” را چاپ کند. اگر شرط برآورده نشد، باید “Invalid” را در آن چاپ کند terminal و عبارت “if” را ببندید. فقط فایل را با میانبر “Ctrl+S” ذخیره کنید و ویرایشگر را با “Ctrl+X” ترک کنید.
در حال حاضر، بازگشت به terminal، ما عبارت execution of را امتحان کرده ایم bash فایل “test.sh” را سه بار با تجزیه برخی از کاراکترها و نمادها اجرا کنید. ما این بار کاراکترهای @، # و f را اضافه کرده ایم. همه کاراکترها مطابق با “نامعتبر” اعلام شده اند bash کد این به این دلیل است که ما از عبارت منظم استفاده کردهایم تا فقط «$» را معتبر بدانیم.
بیایید این بار “$” را در کوئری اجرا بگیریم تا روش عملکرد آن را آزمایش کنیم. به نظر می رسد که “$” یک عبارت معتبر است، و خروجی “Valid” را در داخل چاپ می کند. console پوسته.
مثال 03:
بیایید یک مثال متفاوت و ساده از استفاده از عبارت منظم در دستور case داشته باشیم. دوباره بیایید در را باز کنیم bash فایل “test.sh” در ویرایشگر سیستم اوبونتو 20.04.
همانطور که test.sh bash فایل در داخل راه اندازی شده است GNU ویرایشگر نانو 4.8 terminal، اضافه کردن bash پسوند در ابتدای یک فایل پس از آن، ما از عبارت “read” با پرچم “-p” برای گرفتن ورودی به عنوان نام سرور از کاربر استفاده کرده ایم. این نام سرور به عنوان ورودی در متغیر “SERVER” ذخیره می شود. این سرور باید URL سرور دامنه باشد. اکنون از دستور case در اینجا برای آزمایش عبارت منظم استفاده می کنیم. بنابراین، دستور case را با متغیر SERVER شروع کردهایم تا بررسی کنیم که آیا دامنه سرور ورودی اضافه شده با سایر عبارات ذکر شده در عبارت case مطابقت دارد یا خیر. وقتی مقدار متغیر “SERVER” با ws*.@ مطابقت داشتhost.com، از عبارت echo استفاده می کند تا نشان دهد که این دامنه “وب سرور” است. اگر مطابق با db*.@host.com، از عبارت “echo” برای نشان دادن اینکه سرور یک “سرور DB” است استفاده می کند. اگر دامنه bk*.@ باشدhost.com، “سرور پشتیبان” را نشان می دهد. در غیر این صورت، نشان می دهد که سرور ناشناخته است. ستاره نشان دهنده regex است. پس از این، عبارت case با کلمه کلیدی “esac” در اسکریپت بسته می شود. این کد را ذخیره کرده و با استفاده از همان کلیدهای میانبر «Ctrl+S» و «Ctrl+X» از آن خارج شوید.
در حال حاضر به بازگشت به terminal، بیایید این را آزمایش کنیم bash کد با اجرای bash دستور با نام یک فایل test.sh. پس از اجرا از کاربر می خواهد که نام کاربری را اضافه کند. ما یک نام سرور معتبر “ws” با 1234 به عنوان regex اضافه کرده ایم و Enter را فشار داده ایم. نشان می دهد که نحو سرور با “وب سرور” مطابقت دارد.
ما یک اجرای دیگر انجام داده ایم و این بار سینتکس یک سرور را تغییر داده ایم. از آنجایی که نقطه از URL دامنه گم شده است، نشان می دهد که سرور ناشناخته است.
زمانی که یک دامنه مشابه و درست اضافه کنیم، نام یک سرور را نمایش می دهد.
نتیجه:
در این آموزش، روش استفاده از بیانیه موردی را مورد بحث قرار داده ایم bash برای استفاده از عبارات منظم امیدواریم این مقاله به شما کمک کرده باشد تا شک و تردیدها و عوارض را از بین ببرید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 15:28:03