آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

شرط‌ها و بررسی

شرط‌ها و بررسی فصل پنجم راهنمای BashGuide


شرط‌ها و بررسی‌ها

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


1. وضعیت خروج

از هر دستور موقعی‌که خاتمه می‌یابد یک کد خروج حاصل می‌شود. این کد خروج توسط هر برنامه‌ای که آن دستور را اجرا نموده برای تعیین آنکه مقصودش به درستی انجام شده یا نه استفاده می‌شود. این کد خروج مشابه مقدار برگشتی از توابع می‌باشد. این کد یک عدد صحیح از صفر تا ۲۵۵ می‌باشد. مطابق قرارداد از صفر برای مشخص نمودن موفقیت استفاده می‌کنیم، وهر عدد دیگر بیانگر نوعی شکست می‌باشد. هر برنامه معینی، عدد خاصی را برای اشاره به آنکه دقیقاً چه اشتباهی رخ داده به کار می‌برد.

به عنوان مثال، دستور ping بسته‌های ICMP را در شبکه برای یک میزبان معین ارسال می‌کند. به طور معمول آن میزبان، با برگشت دادن دقیق همان بسته پاسخ می‌دهد. به این طریق می‌توانیم کنترل کنیم که آیا می‌توانیم یک ارتباط با میزبان راه دور برقرار کنیم. دستورping دامنه‌ای از کدهای خروج دارد که اگر مشکلی باشد، می‌تواند به ما بگوید، چه چیز نادرست است:

از مستندات ping لینوکس:

  • اگر ping هیچ بسته بازگشتی دریافت نکند، با کد 1 خارج خواهد شد. اگر یک شماره بسته و یک محدوده زمانی تعیین شده باشد، و شمارش بسته‌های دریافتی در زمان تعیین شده با عدد کمتری اعلام شود نیز با کد 1 خارج می‌شود. در سایر موارد خطا با کد 2 خارج می‌شود. در غیر اینصورت با کد صفر خارج می‌شود. و استفاده از کد خروج امکان آن را فراهم می‌کند که ببینیم میزبان فعال می‌باشد یا خیر.

پارامتر ویژه ? کد خروج آخرین پردازش پیش‌زمینه خاتمه یافته را به ما می‌دهد. اجازه دهید برای دیدن کدهای خروج فرمان ping مثال‌هایی بزنیم:

    $ ping God
    ping: unknown host God
    $ echo $?
    2
    $ ping -c 1 -W 1 1.1.1.1
    PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
    --- 1.1.1.1 ping statistics ---
    1 packets transmitted, 0 received, 100% packet loss, time 0ms
    $ echo $?
    1


  • تکرارمفید:
    همواره باید مطمئن شوید که اسکریپت شما در صورت وقوع رخداد ناخواسته در جریان اجرایش، کد خروج غیر صفر برمی‌گرداند. می‌توانید با استفاده از دستور داخلی exit این کار را عملی کنید:

         rm file || { echo 'Could not delete file!' >&2; exit 1; }



  • کد خروج / وضعیت خروج: هنگامی که یک دستور خاتمه می‌یابد به والدش( در موقعیت ما همیشه پوسته‌ای می‌شود که شروع کرده‌ایم) ، وضعیت خروج خود را گزارش می‌کند. این وضعیت با یک عدد از صفر تا ۲۵۵ نمایانده می‌شود. این کد اشاره‌ای به موفقیت اجرای دستور است.


ادامه دارد ....
نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد