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

سرور مجازی NVMe

آیا دستور TRY CATCH در Bash وجود دارد؟

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


ضربه شدید“پشتیبانی نمی کند”تلاش/گرفتن” فرمان با این حال، راه‌های دیگری برای اعمال قابلیت‌های آن وجود دارد، مانند دستورات if/else، عملگرهای «OR»، فرمان «trap» یا پرچم «-x».

“try-catch” یک اصطلاح برنامه نویسی است که برای رسیدگی به استثناها استفاده می شود. به عبارت ساده، بلوک «try» سعی می‌کند کارهایی انجام دهد، و اگر خطایی وجود داشته باشد، مثلاً فایلی پیدا نشد، یک استثنا می‌اندازد که می‌توان آن را در بلوک «catch» کپی کرد.

این راهنما به بررسی رویکردهایی می پردازد که می توانند به عنوان جایگزینی برای دستور “try/catch” استفاده شوند.

“وضعیت خروج” را بررسی کنید

همه دستورات یک مقدار تک رقمی تولید می کنند (“0” برای “درست” و “1برای «نادرست»). با استفاده از “مجموعه -e” گزینه. اگر دستوری در اسکریپت با کد غیر صفر خارج شد، این گزینه از Bash می خواهد که فوراً از آن خارج شود. در مثال زیر، اسکریپت فایرفاکس را نصب می کند روی سیستم. پس از اجرای موفقیت آمیز، پیغام «فرمان با موفقیت انجام شد“، به شرح زیر است:

#!/bin/bash

تنظیم -e

سودو apt نصب فایرفاکس

اکو “فرمان موفق شد”

قبل از اجرای آن، مطمئن شوید که به آن مجوز اجرا داده اید (اسکریپت فوق با نام “script.sh”) با استفاده از دستور chmod با پرچم +x:

$ سودو chmod +x script.sh

دستور اجرا شده بالا تایید می کند که مجوزهای اجرا به فایل ” اعطا شده است.script.sh“. اما برای اجرای آن، دستور زیر را اعمال کنید:

$ ضربه شدید script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟

با مشاهده تصویر بالا مشخص می شود که دستور به صورت پیغام با موفقیت اجرا شده است.فرمان موفق شد” نمایش داده می شود. ممکن است چندین سناریو وجود داشته باشد که در آن می توانید از دستور echo برای بررسی “استفاده کنید.وضعیت خروج” درست پس از اجرای دستور.

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

چگونه می توان فرمان “تله” را به عنوان TRY CATCH عمل کرد؟

تلهدستور بر اساس کار می کند روی را سیگنال ها توسط سیستم عامل یا کاربر (با فشار دادن “CTRL+C” برای قطع برنامه). این یک ماشه است که پاسخی به یک دستور خاص است. به عنوان مثال، اسکریپت زیر اجرا می شود تا زمانی که کاربر « را فشار دهدCTRL+C“. پس از فشار دادن، پیام “Trap Worked” را نشان می دهد و قبل از اینکه کنترل را به کاربر بازگرداند، برای “5” ثانیه می خوابد:

#!/bin/bash

تله “پژواک “تله کار کرد” INT

(

تله INT

خواب 5

اکو “انجام شده”

) &

صبر کن

اسکریپت فوق به نام “script.sh.بیایید برای مشاهده نتایج آن را اجرا کنیم:

$ ضربه شدید script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

در بالا terminal، مشاهده می شود که وقتی فشار دادیمCTRL+C“، چاپ شد “تله کار کرد“، و می تواند چندین سناریو وجود داشته باشد که بتوان از آن استفاده کرد. به عنوان مثال، در اسکریپت زیر، هنگامی که سرویس در حال اجرا است، آن سرویس را متوقف کرده و مجددا راه اندازی می کند. بیایید سرویس را به عنوان “mysql” در این مورد فرض کنیم:

#!/bin/bash

تابع تمام کردن {

اکو “سرویس شروع شد”

سودو سرویس mysql start

}

تله EXIT را تمام کنید

اکو “خدمات متوقف شد”

سودو سرویس mysql stop

فیلمنامه نام داردscript.sh“. برای مشاهده خروجی آن را اجرا می کنیم:

$ ضربه شدید script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

همانطور که در بالا مشاهده می شود terminal، ابتدا سرویس را متوقف می کند و سپس دوباره آن را راه اندازی می کند. اگر می خواهید سرویس را بلافاصله پس از توقف آن شروع کنید، ” را فشار دهیدCTRL+C”:

$ ضربه شدید script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

مثال‌های بالا شبیه «try/catch» هستند، به‌گونه‌ای که اجرای یک اسکریپت با چند دستور زمان زیادی می‌برد. شما می توانید آن را با استفاده از ” حذف کنیدCTRL+Zکلیدهای میانبر “، اما پیام چاپ شده از طریق ” را نمایش نمی دهد.اکو” فرمان اما زمانی که “تلهدستور ” استفاده می شود، تشخیص اینکه کدام دستور خوب کار می کند و کدام نه آسان تر است.

چگونه با استفاده از “-x Flag” در Bash خروجی را ردیابی کنیم؟

-ایکس” پرچم برای اشکال زدایی یک اسکریپت bash استفاده می شود. هر خط اجرا شده را تفسیر می کند و همه چیز را در اسکریپت نمایش می دهد. برای استفاده از آن، یک قبلی اضافه کنید-ایکس” هنگام اجرای دستور، همانطور که در زیر مشاهده می کنید:

ضربه شدید -ایکس script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

تصویر بالا پارامترهای اسکریپت را با همان فرمتی که اجرا می شود نمایش می دهد.

پیشنهاد می‌کنیم بخوانید:  ایجاد حلقه بی نهایت Bash با اسکریپت های مثال

چگونه هنگام تشخیص خطا در Bash، خروج اجباری را انجام دهیم؟

تنظیم” با ” استفاده می شودerrexit” یا “-e” در bash برای خروج. کاری که انجام می دهد، خاتمه خودکار دستور در صورت بروز خطا است. این گزینه دستور می دهد “ضربه شدید” برای خروج فوری از اسکریپت هنگامی که هر دستوری وضعیت خروج غیر صفر را برمی گرداند که نشان دهنده یک خطا است.

در زیر نمونه ای از اسکریپت آمده است که در آن مخازن سیستم به روز می شوند، پایتون نصب می شود، git کلون می شود، نیازمندی های پایتون نصب می شود و در نهایت سرور به ترتیب راه اندازی می شود:

#!/bin/bash

سودو آپدیت apt-get

سودو apt نصب git حلقه پایتون 3-pip

git clone https://github.com/مثال/repo.git

pip3 نصب -r الزامات. txt

python3 app.py

به نام “script.sh“. برای اجرای آن، دستور زیر را همانطور که توضیح داده شد اعمال کنید:

$ ضربه شدید script.sh

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

“نام کاربری” و “رمز عبور” ارائه شده در بالا برای GitHub نادرست است، که باعث ایجاد خطایی می شود که منجر به خاتمه اسکریپت می شود که در زیر نشان داده شده است:

آیا دستور TRY CATCH در Bash وجود دارد؟آیا دستور TRY CATCH در Bash وجود دارد؟

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

نتیجه

برنامه نویسی bash از ” پشتیبانی نمی کندتلاش/گرفتنبیانیه مانند بسیاری از زبان های برنامه نویسی دیگر. با این حال، جایگزین های دیگری برای اعمال همین عملکرد وجود دارد، مانند بررسی “وضعیت خروج“، با اعمال “تلهدستور ” یا ردیابی خروجی با ”-ایکس” پرچم، که می تواند مفید نیز باشد. همچنین، اسکریپت را می توان بلافاصله پس از ظاهر شدن یک خطا با استفاده از “خاتمه داد.مجموعه -e” فرمان این راهنما وضعیت دستور «try/catch» را در bash و جایگزین‌های آن مورد بحث قرار می‌دهد.

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

زمان انتشار: 1402-12-28 17:24:02

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

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

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