اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نحوه فعال کردن مد Debug شل اسکریپت در لینوکس

بستن
این موضوع "مهم" میباشد.
X
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه فعال کردن مد Debug شل اسکریپت در لینوکس

    یک اسکریپت در حقیقت لیستی از دستورات هست که در یک فایل ذخیره شده اند. به جای اجرا کردن ترتیبی از دستورات با تایپ کردن یکی به یکی آنها در ترمینال، یک کاربر سیستمی میتواند همه این کامند ها را در یک فایل ذخیره کند و به صورت مکرر آن فایل را برای اجرا کردن دستورات مورد نظر در چندین زمان متفاوت استفاده کرد.

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



    به هر حال زمانیکه شروع میکنیم به نوشتن اسکریپت های پیشرفته و خیلی طولانی با هزاران خط کامند (به طور مثال اسکریپت هایی که تنظیمات سیستمی را تغییر میدهند، بک آپ های حیاتی را از بستر شبکه انجام میدهند و موارد بیشمار دیگر) متوجه خواهیم شد که تنها بررسی خروجی اسکریپت برای یافتن باگ های درون یک اسکریپت کافی نیست.

    بنابراین در این مقاله در مورد debuging شل اسکریپت، ما درباره نحوه فعال کردن دیباگ shell script و همچنین توضیح مدهای متفاوت دیباگ شل اسکریپت و نحوه استفاده آنها به ترتیب بحث خواهیم کرد.


    همچنین توصیه میشود مطالعه کنید :

    استفاده از شل اسکریپت برای اتوماتیک کردن Task ها در لینوکس

    آموزش نحوه اجرای Trace دستورات در شل اسکریپت با استفاده از Shell Tracing

    نحوه فعال کردن مد دیباگ به منظور بررسی syntax در شل اسکریپت ها



    چگونگی شروع کردن یک اسکریپت

    یک اسکریپت را با بقیه فایل ها به واسطه اولین خط آن میتوان تشخیص داد که شامل she-bang "#!" که نوع فایل را مشخص میکند میباشد و همچنین نام یک مسیر (مسیر مفسر فایل) که به سیستم اطلاع میدهد این فایل شامل دستوراتی است که باید توسط برنامه مشخص شده تفسیر شود.

    در زیر نمونه های متفاوتی از خط اول اسکریپت ها را مشاهده مینمایید.
    کد PHP:
    #!/bin/sh          [For sh scripting]
    #!/bin/bash        [For bash scripting]
    #!/usr/bin/perl    [For perl programming]
    #!/bin/awk -f      [For awk scripting] 
    توجه : خط اول یا #! را میتوان در اسکریپت قرار نداد، تنها در صورتی که فایل شما شامل دستورات استاندارد سیستم بدون هیچ گونه شرط یا قواعد برنامه نویسی باشد.



    نحوه اجرا کردن یک شل اسکریپت در لینوکس

    ساختار ساده ی به کار گیری و اجرای یک shell script به شرح زیر میباشد.
    کد PHP:
    script_name  argument1 ... argumentN 
    شکل دیگر نحوه اجرای اسکریپت به واسطه مشخص کردن shell ی است که اسکریپت شما را اجرا میکند :
    کد PHP:
    shell script_name argument1 ... argumentN 
    برای مثال :
    کد PHP:
    $ /bin/bash script_name argument1 ... argumentN     [For bash scripting]
    $ /
    bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
    $ /
    bin/sh script_name argument1 ... argumentN       [For sh scripting
    برای اسکریپت هایی که در خط اول شان she-bang "#!" ندارند و تنها شامل دستورات سیستمی ساده و پایه میباشند همانند زیر :
    کد PHP:
    #script containing standard system commands
    cd /home/$USER
    mkdir tmp
    echo "tmp directory created under /home/$USER
    به سادگی میتوانید آنها را قابل اجرا شدن بنمایید و آنها را همانند زیر اجرا کنید :
    کد PHP:
    chmod +x  script_name
    $ ./script_name 


    روش های فعال کردن مد Debugging شل اسکریپت

    در زیر گزینه های دیباگ ابتدایی shell script را مشاهده میکنید :
    -v : (مخفف verbose) که به شل اعلام میکند تمامی خطوط در یک اسکریپت را در حالی که خوانده میشوند نمایش دهد، این گزینه مد verbose را فعال میسازد.
    -n : (مخفف noexec یا no execution) با استفاده از این آپشن شل تمامی دستورات را میخواند اما آنها را اجرا نمیکند. این گزینه مد بررسی syntax را فعال میکند.
    -x : (مخفف xtrace یا execution trace) که به شل اعلام میکند تمامی کامندها و argument های دستورات را زمانیکه آنها در حال اجرا شدن هستند روی ترمینال نمایش دهد. این گزینه مد shell tracing را فعال میکند.


    1 - تغییر اولین خط یک shell script

    اولین مکانیزم با تغییر اولین خط یک شل اسکریپت است. مثال زیر دیباگ کامل اسکریپت را فعال خواهد کرد.
    کد PHP:
    #!/bin/sh option(s) 
    در مورد بالا آپشن میتواند یک یا ترکیبی از آپشن های debugging باشد.


    2 - اجرا کردن Shell با آپشن Debugging

    مورد دوم اجرا کردن دستور shell و همچنین گزینه های debugging همانند زیر میباشد. این روش هم دیباگ کلی اسکریپت را فعال میکند.
    کد PHP:
    shell option(sscript_name argument1 ... argumentN 
    برای مثال :
    کد PHP:
    $ /bin/bash option(sscript_name argument1 ... argumentN 

    3 - استفاده از دستور داخلی Set در Shell

    سومین روش استفاده از دستور داخلی set برای دیباگ کردن یک بخش از یک شل اسکریپت همانند یک function میباشد. این مکانیزم مهم است از آنجایی که به ما اجازه میدهد debugging را در هر بخشی از shell script فعال کنیم.

    ما میتوانیم مد debugging را با استفاده از دستور set و به صورت زیر فعال کنیم و به جای آپشن از هر گزینه debugging استفاده کنیم.
    کد PHP:
    set option 
    برای فعال کردن مد debugging از دستور زیر استفاده میکنیم.
    کد PHP:
    set -option 
    برای غیر فعال کردن مد debugging از دستور زیر استفاده میکنیم.
    کد PHP:
    set +option 
    علاوه بر این اگر ما چندین مد debugging را در بخش های متفاوتی از یک شل اسکریپت فعال کرده باشیم میتوانیم همه آنها را در یک لحظه و با استفاده از دستور زیر غیر فعال کنیم :
    کد PHP:
    set 

    توصیه میشود مقالات زیر را هم مطالعه فرمایید :

    Chaining Operators (عملگرهای زنجیره ای) در لینوکس

    آموزش دستور AWK


    همانطور که در بالا گفتیم ما همواره میتوانیم کل یک شل اسکریپت و یا یک بخش مشخصی از آنرا دیباگ کنیم. در دو مقاله بعد از این سری مقالات ما درباره نحوه استفاده گزینه های دیباگ شل اسکریپت به منظور توضیح verbose، بررسی syntax و مدهای دیباگ shell tracing به همراه مثال بحث خواهیم کرد.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-26-2021, 01:00 AM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X