از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
آیا دستور TRY CATCH در Bash وجود دارد؟
سرفصلهای مطلب
“ضربه شدید“پشتیبانی نمی کند”تلاش/گرفتن” فرمان با این حال، راههای دیگری برای اعمال قابلیتهای آن وجود دارد، مانند دستورات if/else، عملگرهای «OR»، فرمان «trap» یا پرچم «-x».
“try-catch” یک اصطلاح برنامه نویسی است که برای رسیدگی به استثناها استفاده می شود. به عبارت ساده، بلوک «try» سعی میکند کارهایی انجام دهد، و اگر خطایی وجود داشته باشد، مثلاً فایلی پیدا نشد، یک استثنا میاندازد که میتوان آن را در بلوک «catch» کپی کرد.
این راهنما به بررسی رویکردهایی می پردازد که می توانند به عنوان جایگزینی برای دستور “try/catch” استفاده شوند.
- بررسی کنید “وضعیت خروج“.
- “تله” فرمان
- ردیابی خروجی با استفاده از “-x پرچم“.
- “خروج اجباری” هنگامی که خطا تشخیص داده می شود.
“وضعیت خروج” را بررسی کنید
همه دستورات یک مقدار تک رقمی تولید می کنند (“0” برای “درست” و “1برای «نادرست»). با استفاده از “مجموعه -e” گزینه. اگر دستوری در اسکریپت با کد غیر صفر خارج شد، این گزینه از Bash می خواهد که فوراً از آن خارج شود. در مثال زیر، اسکریپت فایرفاکس را نصب می کند روی سیستم. پس از اجرای موفقیت آمیز، پیغام «فرمان با موفقیت انجام شد“، به شرح زیر است:
تنظیم -e
سودو apt نصب فایرفاکس
اکو “فرمان موفق شد”
قبل از اجرای آن، مطمئن شوید که به آن مجوز اجرا داده اید (اسکریپت فوق با نام “script.sh”) با استفاده از دستور chmod با پرچم +x:
دستور اجرا شده بالا تایید می کند که مجوزهای اجرا به فایل ” اعطا شده است.script.sh“. اما برای اجرای آن، دستور زیر را اعمال کنید:
با مشاهده تصویر بالا مشخص می شود که دستور به صورت پیغام با موفقیت اجرا شده است.فرمان موفق شد” نمایش داده می شود. ممکن است چندین سناریو وجود داشته باشد که در آن می توانید از دستور echo برای بررسی “استفاده کنید.وضعیت خروج” درست پس از اجرای دستور.
چگونه می توان فرمان “تله” را به عنوان TRY CATCH عمل کرد؟
“تلهدستور بر اساس کار می کند روی را سیگنال ها توسط سیستم عامل یا کاربر (با فشار دادن “CTRL+C” برای قطع برنامه). این یک ماشه است که پاسخی به یک دستور خاص است. به عنوان مثال، اسکریپت زیر اجرا می شود تا زمانی که کاربر « را فشار دهدCTRL+C“. پس از فشار دادن، پیام “Trap Worked” را نشان می دهد و قبل از اینکه کنترل را به کاربر بازگرداند، برای “5” ثانیه می خوابد:
تله “پژواک “تله کار کرد” INT
(
تله ” INT
خواب 5
اکو “انجام شده”
) &
صبر کن
اسکریپت فوق به نام “script.sh.بیایید برای مشاهده نتایج آن را اجرا کنیم:
در بالا terminal، مشاهده می شود که وقتی فشار دادیمCTRL+C“، چاپ شد “تله کار کرد“، و می تواند چندین سناریو وجود داشته باشد که بتوان از آن استفاده کرد. به عنوان مثال، در اسکریپت زیر، هنگامی که سرویس در حال اجرا است، آن سرویس را متوقف کرده و مجددا راه اندازی می کند. بیایید سرویس را به عنوان “mysql” در این مورد فرض کنیم:
تابع تمام کردن {
اکو “سرویس شروع شد”
سودو سرویس mysql start
}
تله EXIT را تمام کنید
اکو “خدمات متوقف شد”
سودو سرویس mysql stop
فیلمنامه نام داردscript.sh“. برای مشاهده خروجی آن را اجرا می کنیم:
همانطور که در بالا مشاهده می شود terminal، ابتدا سرویس را متوقف می کند و سپس دوباره آن را راه اندازی می کند. اگر می خواهید سرویس را بلافاصله پس از توقف آن شروع کنید، ” را فشار دهیدCTRL+C”:
مثالهای بالا شبیه «try/catch» هستند، بهگونهای که اجرای یک اسکریپت با چند دستور زمان زیادی میبرد. شما می توانید آن را با استفاده از ” حذف کنیدCTRL+Zکلیدهای میانبر “، اما پیام چاپ شده از طریق ” را نمایش نمی دهد.اکو” فرمان اما زمانی که “تلهدستور ” استفاده می شود، تشخیص اینکه کدام دستور خوب کار می کند و کدام نه آسان تر است.
چگونه با استفاده از “-x Flag” در Bash خروجی را ردیابی کنیم؟
“-ایکس” پرچم برای اشکال زدایی یک اسکریپت bash استفاده می شود. هر خط اجرا شده را تفسیر می کند و همه چیز را در اسکریپت نمایش می دهد. برای استفاده از آن، یک قبلی اضافه کنید-ایکس” هنگام اجرای دستور، همانطور که در زیر مشاهده می کنید:
تصویر بالا پارامترهای اسکریپت را با همان فرمتی که اجرا می شود نمایش می دهد.
چگونه هنگام تشخیص خطا در Bash، خروج اجباری را انجام دهیم؟
“تنظیم” با ” استفاده می شودerrexit” یا “-e” در bash برای خروج. کاری که انجام می دهد، خاتمه خودکار دستور در صورت بروز خطا است. این گزینه دستور می دهد “ضربه شدید” برای خروج فوری از اسکریپت هنگامی که هر دستوری وضعیت خروج غیر صفر را برمی گرداند که نشان دهنده یک خطا است.
در زیر نمونه ای از اسکریپت آمده است که در آن مخازن سیستم به روز می شوند، پایتون نصب می شود، git کلون می شود، نیازمندی های پایتون نصب می شود و در نهایت سرور به ترتیب راه اندازی می شود:
سودو آپدیت apt-get
سودو apt نصب git حلقه پایتون 3-pip
git clone https://github.com/مثال/repo.git
pip3 نصب -r الزامات. txt
python3 app.py
به نام “script.sh“. برای اجرای آن، دستور زیر را همانطور که توضیح داده شد اعمال کنید:
“نام کاربری” و “رمز عبور” ارائه شده در بالا برای GitHub نادرست است، که باعث ایجاد خطایی می شود که منجر به خاتمه اسکریپت می شود که در زیر نشان داده شده است:
همانطور که در بالا مشاهده شد، اسکریپت بلافاصله پس از بروز خطا خاتمه می یابد.
نتیجه
برنامه نویسی bash از ” پشتیبانی نمی کندتلاش/گرفتنبیانیه مانند بسیاری از زبان های برنامه نویسی دیگر. با این حال، جایگزین های دیگری برای اعمال همین عملکرد وجود دارد، مانند بررسی “وضعیت خروج“، با اعمال “تلهدستور ” یا ردیابی خروجی با ”-ایکس” پرچم، که می تواند مفید نیز باشد. همچنین، اسکریپت را می توان بلافاصله پس از ظاهر شدن یک خطا با استفاده از “خاتمه داد.مجموعه -e” فرمان این راهنما وضعیت دستور «try/catch» را در bash و جایگزینهای آن مورد بحث قرار میدهد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 17:24:02