باش اسکرپٹ کو ڈیبگ کیسے کریں؟

How Debug Bash Script




کسی بھی پروگرام کو صارفین تک پہنچنے سے پہلے غلطیوں سے پاک ہونا ضروری ہے۔ سافٹ ویئر ڈویلپرز سافٹ ویئر پروگراموں کو بگ فری بنانے کی پوری کوشش کرتے ہیں۔ لیکن جب ہزاروں لائنیں ہوں تو کوڈ کو بے عیب بنانا مشکل ہے۔ ڈیبگنگ ایک جاری عمل ہے یہ فوری طور پر غلطیوں کا پتہ لگانے ، کوڈ کے بارے میں قیمتی معلومات اکٹھا کرنے اور بے کار کوڈ کے حصوں کو ختم کرنے میں مدد کرتا ہے۔

تمام پروگرامنگ زبانوں میں کیڑے تلاش کرنے کے لیے کچھ عام اور چند الگ الگ طریقے ہوتے ہیں۔ مثال کے طور پر ، ڈیبگنگ پروگراموں کو غلطیوں کو جلدی دور کرنے کے لیے استعمال کیا جا سکتا ہے۔ جبکہ شیل اسکرپٹنگ کوڈ کو ڈیبگ کرنے کے لیے کوئی خاص ٹول نہیں ہے۔ یہ تحریر مختلف ڈیبگنگ تکنیکوں پر بحث کرنے کے بارے میں ہے جن کا استعمال بش اسکرپٹ کو غلطی سے پاک بنانے کے لیے کیا جا سکتا ہے۔ اس سے پہلے کہ ہم طریقوں میں غوطہ لگائیں ، آئیے گولوں اور شیل اسکرپٹنگ کی بنیادی تفہیم رکھتے ہیں:







لینکس میں شیل کیا ہے؟

جب آپ اپنے کمپیوٹر کو بوٹ کرتے ہیں تو ، دانا منسلک ہارڈ ویئر کے بارے میں معلومات حاصل کرتا ہے اور دوسرے منسلک اجزاء کو بات چیت کرنے دیتا ہے۔ اس کے علاوہ ، یہ میموری ، سی پی یو کا انتظام کرتا ہے اور کسی بھی نئے پردیی کو پہچانتا ہے۔ مجموعی طور پر ، دانا کسی بھی آپریٹنگ سسٹم کی ریڑھ کی ہڈی ہے۔ لیکن کیا آپ نے کبھی سوچا ہے کہ دانا کے ساتھ براہ راست بات چیت کریں ، اسے ایک مخصوص کام انجام دینے کا حکم دیں؟ کیا ایسا کرنا بھی قابل عمل ہے؟ بالکل! ایک شیل ، ایک انٹرایکٹو انٹرفیس کے ساتھ ایک کمپیوٹر پروگرام کی مدد سے ، کوئی بھی دانا چلا سکتا ہے۔ شیل انسانوں کو دانا کے ساتھ بات چیت کرنے کی اجازت دیتا ہے اور اسے کسی بھی کام کو انجام دینے کی ہدایت دیتا ہے۔



یونکس میں ، دو اہم خول ہیں۔ بورن شیل۔ اور سی شیل۔ . ان دونوں اقسام کی اپنی ذیلی زمرہ جات ہیں۔ بورن گولوں کی مختلف اقسام ہیں۔ کارن شیل (ksh) ، الموکیسٹ شیل (راھ) ، بورن دوبارہ شیل (بش) ، اور زیڈ شیل (zsh) . ایک ہی وقت میں ، سی شیل کی اپنی ذیلی زمرہ جات ہیں۔ سی شیل (csh) اور TENEX C شیل۔ (tcsh) . جیسا کہ اوپر ذکر کیا گیا ہے ، تمام خولوں میں سے ، باش (بورن دوبارہ شیل) سب سے زیادہ استعمال ہونے والا شیل ہے اور اس کی کارکردگی اور صارف دوستی کی وجہ سے بہت سے لینکس ڈسٹری بیوشن میں باکس سے باہر آتا ہے۔



باش بہت سے لینکس ڈسٹری بیوشنز کا ڈیفالٹ شیل ہے اور اسے لاکھوں لینکس صارفین استعمال کرتے ہیں۔ یہ اتنا متنوع اور بااثر ہے کہ یہ ہر وہ کام انجام دے سکتا ہے جو آپ عام طور پر GUI پر مبنی ایپلی کیشنز میں انجام دیتے ہیں۔ آپ فائلوں میں ترمیم کرسکتے ہیں ، فائلوں کا انتظام کرسکتے ہیں ، تصاویر دیکھ سکتے ہیں ، موسیقی سن سکتے ہیں ، ویڈیو چلا سکتے ہیں اور بہت کچھ کرسکتے ہیں۔





شیل اسکرپٹ کیا ہے:

جیسا کہ ہم نے شیل کا بنیادی خیال سیکھا ہے ، اب آئیے شیل سکرپٹنگ کی طرف چلتے ہیں۔ شیل سکرپٹ ایک کمپیوٹر پروگرام ہے جو ایک شیل میں ایک سے زیادہ کمانڈز پر عملدرآمد کرتا ہے جو ایک خاص کام انجام دینے کے لیے مترجم کے طور پر کام کرتا ہے۔ جیسا کہ اوپر بحث کی گئی ہے ، 2 خاص قسم کے خول ہیں۔ تاہم ، یہ گائیڈ بورن اگین شیل (بش) پر توجہ دے رہا ہے۔
تو باش اسکرپٹ کیا ہے؟ لینکس میں ، تمام بش کمانڈز محفوظ ہیں۔ /usr /bin اور /bin فولڈرز مثال کے طور پر ، جب بھی آپ کمانڈ چلاتے ہیں ، bash تلاش کرتا ہے کہ آیا یہ ڈائریکٹری میں موجود ہے یا نہیں۔ کمانڈ پر عملدرآمد ہو جاتا ہے اگر یہ ڈائریکٹریوں میں مل جائے تو دوسری غلطی ہو جاتی ہے۔

کسی ایسے کام کو انجام دینے کے بارے میں جو ٹرمینل میں چلانے کے لیے ایک سے زیادہ کمانڈز کی ضرورت ہو؟ اس مخصوص صورتحال میں ، بش سکرپٹنگ آپ کی مدد کر سکتی ہے۔ باش سکرپٹنگ شیل اسکرپٹنگ کی ایک شکل ہے جو آپ کو ایک مخصوص کام انجام دینے کے لیے ایک سے زیادہ بش کمانڈ چلانے کے لیے پروگرام بنانے کی اجازت دیتی ہے۔



بش اسکرپٹنگ میں کیڑے کیا ہیں:

بش سکرپٹنگ یا کسی دوسری پروگرامنگ زبانوں کے ساتھ کام کرتے ہوئے ، آپ کو بہت سی غلطیوں کا سامنا کرنا پڑتا ہے۔ ایک بگ پروگرام میں غلطی یا غلطی ہے جو پروگرام کو غلط طریقے سے برتاؤ کا سبب بن سکتی ہے۔

کیڑے تلاش کرنے کے لیے ہر پروگرامنگ زبان کا اپنا طریقہ کار ہوتا ہے۔ اسی طرح ، بش کے پاس ٹرمینل پروگرام کو ڈیبگ کرنے کے لیے بہت سے بلڈ ان آپشنز بھی ہیں۔

غلطیوں کا انتظام کرنا اور کسی پروگرام کو ڈیبگ کرنا کسی پریشانی سے کم نہیں۔ یہ ایک وقت طلب کام ہے اور اگر آپ اپنے پروگرام کو ڈیبگ کرنے کے لیے صحیح ٹولز سے آگاہ نہیں ہیں تو یہ مزید خراب ہو سکتا ہے۔ یہ تحریر آپ کے سکرپٹ کو غلطی سے پاک بنانے کے لیے بش سکرپٹس کو ڈیبگ کرنے کے بارے میں ایک مکمل رہنما ہے۔ تو آئیے شروع کرتے ہیں:

بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ:

جب آپ بڑے پروگرامنگ پروجیکٹس پر کام کرتے ہیں تو آپ کو بہت سی غلطیوں یا کیڑے کا سامنا کرنا پڑتا ہے۔ کسی پروگرام کو ڈیبگ کرنا بعض اوقات پیچیدہ ہو سکتا ہے۔ پروگرامرز عام طور پر ڈیبگنگ ٹولز استعمال کرتے ہیں ، اور بہت سے کوڈ ایڈیٹرز نحو کو نمایاں کرکے بگ تلاش کرنے میں بھی مدد کرتے ہیں۔

لینکس میں کوڈ کو ڈیبگ کرنے کے لیے مختلف ٹولز ہیں ، مثال کے طور پر ، GNU ڈیبگر عرف gdb۔ جی ڈی بی جیسے ٹولز پروگرامنگ زبانوں کے لیے مددگار ہیں جو بائنریز میں مرتب ہوتی ہیں۔ چونکہ باش ایک سادہ تشریح شدہ زبان ہے ، اس کو ڈیبگ کرنے کے لیے بھاری ٹولز کی ضرورت نہیں ہے۔

باش سکرپٹنگ کوڈ کو ڈیبگ کرنے کی مختلف روایتی تکنیکیں ہیں ، اور ان میں سے ایک شامل کر رہا ہے۔ دعوے دعوے وہ شرائط ہیں جو پروگراموں میں مخصوص شرائط کو چیک کرنے اور اس کے مطابق پروگرام کو انجام دینے کے لیے شامل کی جاتی ہیں۔ یہ ایک دفاعی تکنیک ہے جو کیڑے تلاش کرنے اور جانچنے میں بھی مدد دیتی ہے۔ آپ کو بہت سے مل سکتے ہیں۔ اوزار جو بش سکرپٹ میں دعوے شامل کرنے میں مدد کرتا ہے۔

ٹھیک ہے ، دعوے شامل کرنا پرانی روایتی تکنیکوں میں سے ایک ہے۔ بش سکرپٹ کو ڈیبگ کرنے کے لیے bash میں جھنڈوں/اختیارات کے سیٹ دستیاب ہیں۔ ان اختیارات کو سکرپٹ میں شیبنگ کے ساتھ شامل کیا جا سکتا ہے یا ٹرمینل میں پروگرام کو چلاتے وقت شامل کیا جا سکتا ہے۔ جن موضوعات کو ہم لینے جا رہے ہیں وہ ذیل میں درج ہیں:

  1. بش اسکرپٹ کو فعال کرکے ڈیبگ کرنے کا طریقہ۔ فعل -وی اختیار
  2. بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ۔ xtrace -x اختیار
  3. بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ۔ noexec -n اختیار
  4. کی شناخت کیسے کی جائے۔ غیر متغیر متغیرات بش اسکرپٹ کو ڈیبگ کرتے ہوئے۔
  5. ڈیبگ کرنے کا طریقہ۔ مخصوص حصہ بش سکرپٹ کا
  6. bash اسکرپٹ کو ڈیبگ کرنے کا طریقہ جال کمانڈ
  7. بش اسکرپٹ کو ختم کرکے کیسے ڈیبگ کریں۔ فائل گلوبنگ کا استعمال کرتے ہوئے اختیار
  8. کیسے یکجا شیل اسکرپٹ کو ڈیبگ کرنے کے لیے ڈیبگنگ کے اختیارات۔
  9. کیسے ڈیبگ رپورٹ کو ری ڈائریکٹ کریں۔ ایک فائل کو

تو آئیے بش سکرپٹ کو ڈیبگ کرنے کے لیے bash میں مختلف تکنیکوں کو چیک کریں:

1. verbose -v آپشن کو فعال کرکے بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ:

بش اسکرپٹ کو ڈیبگ کرنے کا ایک آسان ترین طریقہ استعمال کرنا ہے۔ -v آپشن ، جسے وربوز بھی کہا جاتا ہے۔ آپشن کو شیبنگ کے ساتھ شامل کیا جا سکتا ہے یا اس پر عملدرآمد کرتے ہوئے واضح طور پر اسکرپٹ فائل کے نام کے ساتھ رکھا جا سکتا ہے۔ وربوس آپشن کوڈ کی ہر سطر کو بطور مترجم عمل کرے گا اور پرنٹ کرے گا۔ آئیے اسے باش اسکرپٹ مثال کے ساتھ سمجھتے ہیں:

#! /bin/bash
باہر پھینک دیا 'نمبر 1 درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا نمبر 2 درج کریں
پڑھیںنمبر 2
اگر [ '$ نمبر 1۔' -جی ٹی '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 سے بڑا ہے
ایلف [ '$ نمبر 1۔' -ایک '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 کے برابر ہے
اور
باہر پھینک دیا نمبر 2 نمبر 1 سے بڑا ہے
ہو

مذکورہ کوڈ صارف سے دو نمبر حاصل کر رہا ہے اور پھر کچھ مشروط بیانات دے رہا ہے تاکہ چیک کیا جا سکے کہ نمبر زیادہ اہم ہے ، کم ہے یا دوسرے درج کردہ نمبر کے برابر ہے۔ اگرچہ کوئی بھی ٹیکسٹ ایڈیٹر بش سکرپٹنگ کے لیے استعمال کیا جا سکتا ہے ، میں ویم ایڈیٹر استعمال کر رہا ہوں۔ ویم ایک طاقتور ، فیچر سے بھرپور ایڈیٹر ہے جو بش سکرپٹ کے نحو کو اجاگر کرتا ہے اور نحو کی غلطیوں کے امکانات کو کم کرتا ہے۔ اگر آپ کے پاس ویم ایڈیٹر نہیں ہے تو ، نیچے دی گئی کمانڈ کو چلا کر حاصل کریں:

$سودومناسبانسٹال کریں میں آیا

بش اسکرپٹ فائل کا استعمال کرتے ہوئے بنائیں:

$میں آیاb_script.sh

اگر آپ ویم ایڈیٹر کے لیے نئے ہیں ، تو میں آپ کو سیکھنے کی سفارش کرتا ہوں۔ ویم ایڈیٹر کا استعمال کیسے کریں آگے بڑھنے سے پہلے.

اب ، اسکرپٹ پر واپس ، استعمال کرکے اسکرپٹ پر عمل کریں۔ -v اختیار:

$لشکر -vb_script.sh

یہ مندرجہ بالا آؤٹ پٹ میں دیکھا جا سکتا ہے کہ اسکرپٹ کی ہر لائن ٹرمینل میں چھپی ہوئی ہے جیسا کہ وہ مترجم کے ذریعہ کارروائی کرتے ہیں۔ نوٹ کریں کہ اسکرپٹ صارف سے ان پٹ لینا بند کردے گا اور پھر اسکرپٹ کی اگلی لائن پر کارروائی کرے گا۔ جیسا کہ اوپر بحث کی گئی ہے۔ -v شیبنگ کے بعد آپشن رکھا جا سکتا ہے جیسا کہ درج ذیل میں دکھایا گیا ہے:

#! / bin / bash -v

اسی طرح ، verbose پرچم کو بھی استعمال کرتے ہوئے شیبنگ کی اگلی لائن میں شامل کیا جا سکتا ہے۔ سیٹ کمانڈ:

#! /bin/bash
سیٹ -v

مذکورہ بالا طریقوں میں سے کوئی بھی فعل کو فعال کرسکتا ہے۔

2 xtrace -x آپشن کا استعمال کرتے ہوئے بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ:

پھانسی کا سراغ ، جسے xtrace بھی کہا جاتا ہے ایک ہوشیار اور مفید ڈیبگنگ آپشن ہے ، خاص طور پر منطقی غلطیوں کا سراغ لگانا۔ منطقی غلطیاں عام طور پر متغیرات اور احکامات سے وابستہ ہوتی ہیں۔ اسکرپٹ پر عمل درآمد کے دوران متغیر کی حالت چیک کرنے کے لیے ، ہم استعمال کرتے ہیں -ایکس اختیار اب پھر ، چلائیں b_script.sh کے ساتھ فائل -ایکس پرچم:

$لشکر -ایکسb_script.sh

عملدرآمد کے عمل کے دوران آؤٹ پٹ واضح طور پر ہر متغیر کی قیمت دکھا رہا ہے۔ ایک بار پھر ، -ایکس سیٹ کمانڈ کا استعمال کرتے ہوئے شیبنگ کے ساتھ اور شیبنگ لائن کے بعد استعمال کیا جا سکتا ہے۔ ایکسٹریس اسکرپٹ کی ہر لائن کے ساتھ + نشان رکھتا ہے۔

3 noexec -n آپشن کا استعمال کرتے ہوئے بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ:

نحو کی غلطیاں کیڑے کی بنیادی وجوہات میں سے ایک ہیں۔ بش اسکرپٹ کو مصنوعی طور پر ڈیبگ کرنے کے لیے ، ہم استعمال کرتے ہیں۔ noexec (عملدرآمد نہیں) موڈ۔ نویکسیک موڈ کے لیے استعمال ہونے والا آپشن ہے۔ -ن. یہ کوڈ پر عملدرآمد کے بجائے صرف نحو کی غلطیوں کو ظاہر کرے گا۔ کوڈ کو ڈیبگ کرنے کا ایک زیادہ محفوظ طریقہ۔ آئیے عمل کریں۔ b_script.sh ایک بار پھر کے ساتھ اختیار:

$لشکر b_script.sh

اگر کوئی نحو کی خرابی نہیں ہے تو کوڈ پر عمل درآمد نہیں ہوگا۔ اب ، آئیے اپنے کوڈ میں ترمیم کریں:

#! /bin/bash

باہر پھینک دیا 'نمبر 1 درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا نمبر 2 درج کریں
پڑھیںنمبر 2
اگر [ '$ نمبر 1۔' -جی ٹی '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 سے بڑا ہے
ایلف [ '$ نمبر 1۔' -ایک '$ 2۔' ]
#پھر
باہر پھینک دیا نمبر 1 نمبر 2 کے برابر ہے
اور
باہر پھینک دیا نمبر 2 نمبر 1 سے بڑا ہے
ہو

میں تبصرہ کر رہا ہوں۔ پھر کے بعد ایلف . اب ، -n عملدرآمد کے ساتھ۔ b_script.sh سکرپٹ:

$لشکر b_script.sh

جیسا کہ متوقع تھا ، اس نے واضح طور پر غلطی کی نشاندہی کی اور اسے ٹرمینل میں ظاہر کیا۔

4 بیش اسکرپٹ کو ڈیبگ کرتے ہوئے غیر سیٹ شدہ متغیرات کی شناخت کیسے کریں:

کوڈ لکھتے وقت ٹائپو بنانا عام بات ہے۔ اکثر ، آپ ایک متغیر کو غلط ٹائپ کرتے ہیں ، جو کوڈ پر عملدرآمد نہیں ہونے دیتا۔ ایسی غلطی کی نشاندہی کرنے کے لیے ، ہم استعمال کرتے ہیں اختیار آئیے کوڈ میں دوبارہ ترمیم کریں:

#! /bin/bash
باہر پھینک دیا 'نمبر 1 درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا نمبر 2 درج کریں
پڑھیںنمبر 2
اگر [ '$ num1۔' -جی ٹی '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 سے بڑا ہے
ایلف [ '$ نمبر 1۔' -ایک '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 کے برابر ہے
اور
باہر پھینک دیا نمبر 2 نمبر 1 سے بڑا ہے
ہو

سب سے پہلے اگر مشروط بیان ، میں نے نام تبدیل کر دیا نمبر 1 سے متغیر نمبر 1 . ابھی نمبر 1 ایک غیر سیٹ متغیر ہے اب اسکرپٹ چلائیں:

$لشکر b_script.sh

آؤٹ پٹ نے غیر سیٹ متغیر کے نام کی نشاندہی کی ہے اور واضح طور پر دکھاتا ہے۔

5. بش اسکرپٹ کے مخصوص حصے کو ڈیبگ کرنے کا طریقہ:

ایکسٹریس موڈ کوڈ کی ہر لائن پر کارروائی کرتا ہے اور آؤٹ پٹ دیتا ہے۔ تاہم ، بڑے کوڈ میں غلطیاں ڈھونڈنا وقت طلب ہوگا اگر ہم پہلے ہی جان لیں کہ کون سا حصہ ممکنہ طور پر غلطی کا سبب بن رہا ہے۔ خوش قسمتی سے ، ایکسٹریس آپ کو کوڈ کے ایک مخصوص حصے کو ڈیبگ کرنے کی بھی اجازت دیتا ہے ، جسے استعمال کرکے پورا کیا جاسکتا ہے۔ سیٹ کمانڈ. جگہ۔ سیٹ -ایکس اس حصے کے آغاز میں جسے ڈیبگ کرنے کی ضرورت ہے اور پھر۔ سیٹ +ایکس آخر میں. مثال کے طور پر ، میں مشروط بیانات کو ڈیبگ کرنا چاہتا ہوں۔ b_script.sh ، لہذا میں تمام مشروط بیانات کو شامل کروں گا۔ سیٹ -ایکس اور سیٹ +ایکس اختیارات جیسا کہ نیچے کوڈ میں دکھایا گیا ہے:

#! /bin/bash
باہر پھینک دیا 'نمبر 1 درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا نمبر 2 درج کریں
پڑھیںنمبر 2
سیٹ -ایکس
اگر [ '$ نمبر' -جی ٹی '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 سے بڑا ہے
ایلف [ '$ نمبر 1۔' -ایک '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 کے برابر ہے
اور
باہر پھینک دیا نمبر 2 نمبر 1 سے بڑا ہے
ہو
سیٹ+ ایکس۔

اب ، اسکرپٹ کا استعمال کرتے ہوئے چلائیں۔ bash b_script.sh .

آؤٹ پٹ صرف ڈیبگنگ کر رہا ہے اگر شرائط بیان کی گئی ہیں۔

ٹریپ کمانڈ کا استعمال کرتے ہوئے بش اسکرپٹ کو ڈیبگ کرنے کا طریقہ:

اگر آپ کا سکرپٹ پیچیدہ ہے تو پھر ڈیبگنگ کے لیے مزید تفصیلی تراکیب بھی ہیں۔ ان میں سے ایک ہے جال کمانڈ. کی جال کمانڈ سگنلز کو پکڑتی ہے اور جب کوئی خاص صورتحال پیش آتی ہے تو کمانڈ پر عملدرآمد کرتی ہے۔ کمانڈ سگنل یا فنکشن ہو سکتا ہے۔ کے نام سے میں نے ایک اور سکرپٹ بنایا ہے۔ sum_script.sh :

#! /bin/bash
جال 'ایکو' لائن $ {LINENO}: پہلا نمبر $ number1 ہے ، دوسرا نمبر $ number2 ہے اور رقم $ sum ہے ''ڈیبگ۔
باہر پھینک دیا 'پہلا نمبر درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا 'دوسرا نمبر درج کریں'
پڑھیںنمبر 2
رقم= $۔[نمبر 1 + نمبر 2]
باہر پھینک دیا 'رقم ہے$ رقم'

کی جال کے ساتھ حکم دیں ڈیبگ۔ سگنل متغیر کی حیثیت ظاہر کرتا ہے۔ نمبر 1 ، نمبر 2 اور رقم ہر لائن پر عملدرآمد کے بعد جیسا کہ مندرجہ ذیل آؤٹ پٹ امیج میں دکھایا گیا ہے۔

پیلے بلاکس خالی جگہیں ہیں کیونکہ صارف نے ابھی تک کوئی ان پٹ داخل نہیں کیا ہے۔ جب صارف اقدار میں داخل ہوتا ہے تو یہ خالی جگہیں بھر جائیں گی۔ یہ طریقہ بش اسکرپٹس کو ڈیبگ کرنے میں بھی کافی مددگار ہے۔

7. -f آپشن کا استعمال کرتے ہوئے فائل گلوبنگ کو ختم کرکے باش اسکرپٹ کو ڈیبگ کیسے کریں:

فائل گلوبنگ وائلڈ کارڈ حروف والی فائلوں کو ڈھونڈنے کا عمل ہے ، یعنی ، * اور ؟ . بہت سے حالات میں ، آپ کو ڈیبگ کرتے وقت فائلوں کو بڑھانے کی ضرورت نہیں ہے۔ ایسے معاملات میں ، آپ فائل کا استعمال کرتے ہوئے گلوبنگ کو بلاک کرسکتے ہیں۔ اختیار آئیے اسے اسکرپٹ سے سمجھیں۔ fglobe_script.sh :

#! /bin/bash
باہر پھینک دیا تمام ٹیکسٹ فائلیں دکھائیں۔
ایل ایس *.TXT

مذکورہ کوڈ تمام ٹیکسٹ فائلوں کو موجودہ ڈائریکٹری میں دکھائے گا ، عملدرآمد کرے گا:

$لشکرfglobe_script.sh

فائل گلوبنگ کو آف کرنے کے لیے ، اختیار:

$لشکر fglobe_script.sh

اسی طرح ، آپ اسے شیبنگ اور کے ساتھ استعمال کرسکتے ہیں۔ سیٹ کمانڈ بھی:

#! /bin/bash
باہر پھینک دیا تمام ٹیکسٹ فائلیں دکھائیں۔
ایل ایس *.TXT
سیٹ
باہر پھینک دیا 'تمام ٹیکسٹ فائلیں دکھائیں'
ایل ایس *.TXT
سیٹ+ایف

اب ، چلائیں۔ bash fglobe_script.sh:

وہ حصہ جس کے ساتھ بند ہے۔ سیٹ -f/سیٹ +ایف۔ اختیارات نے وائلڈ کارڈ حروف کے ساتھ کمانڈز پر کارروائی نہیں کی۔

8. شیل اسکرپٹ کو ڈیبگ کرنے کے لیے ڈیبگنگ آپشنز کو کیسے جوڑیں:

ہم مذکورہ ڈیبگنگ تکنیک میں صرف ایک آپشن استعمال کرتے ہیں ، لیکن ہم بہتر فہم کے لیے مختلف آپشنز کو یکجا کر سکتے ہیں۔ آئیے عمل درآمد کریں۔ -ایکس اور -v کے اختیارات sum_script.sh سکرپٹ. میں استعمال کر رہا ہوں sum_script.sh سکرپٹ.

#! /bin/bash
باہر پھینک دیا 'پہلا نمبر درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا 'دوسرا نمبر درج کریں'
پڑھیںنمبر 2
رقم= $۔[نمبر 1 + نمبر 2]
باہر پھینک دیا 'رقم ہے$ رقم'

اب عمل کریں:

$لشکر -ایکس ویsum_script.sh

دونوں -ایکس اور -v آؤٹ پٹ مشترکہ ہیں ، جیسا کہ آؤٹ پٹ امیج میں دکھایا گیا ہے۔ اسی طرح ، ہم بھی جمع کر سکتے ہیں غلطی کا پتہ لگانے کے لیے verbose -v کے ساتھ آپشن۔ میں اس کی جگہ لے رہا ہوں۔ نمبر 1 کے ساتھ متغیر ایک پر اسکرپٹ کی چھٹی لائن میں:

#! /bin/bash
ہے$ 2۔اوررقمہے$ رقم'' ڈیبگ۔
باہر پھینک دیا '
پہلا نمبر درج کریں۔'
نمبر 1 پڑھیں
باہر پھینک دیا '
دوسرا نمبر درج کریں۔'
نمبر 2 پڑھیں
رقم = $ [num + number2]
باہر پھینک دیا '
کیرقمہے$ رقم'

آؤٹ پٹ دیکھنے کے لیے ، نیچے دی گئی کمانڈ چلائیں:

$لشکر -یوویsum_script.sh

9. ڈیبگ رپورٹ کو کسی فائل میں ری ڈائریکٹ کرنے کا طریقہ:

بش سکرپٹ کی ڈیبگ رپورٹ کو فائل میں محفوظ کرنا بہت سے حالات میں کام آسکتا ہے۔ یہ تھوڑا مشکل ہے کیونکہ ڈیبگ رپورٹ کو کسی فائل میں ری ڈائریکٹ کرنا۔ ہم کچھ خاص متغیرات استعمال کرتے ہیں۔ آئیے اس پر عمل درآمد کریں۔ b_script.sh کوڈ:

#! /bin/bash
عملدرآمد >dubug_report.log
BASH_XTRACED='5'
PS4۔='$ LINENO--'
باہر پھینک دیا 'نمبر 1 درج کریں'
پڑھیںنمبر 1
باہر پھینک دیا نمبر 2 درج کریں
پڑھیںنمبر 2
اگر [ '$ نمبر' -جی ٹی '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 سے بڑا ہے
ایلف [ '$ نمبر 1۔' -ایک '$ 2۔' ]
پھر
باہر پھینک دیا نمبر 1 نمبر 2 کے برابر ہے
اور
باہر پھینک دیا نمبر 2 نمبر 1 سے بڑا ہے
ہو

کوڈ کی دوسری لائن میں ، یہ دیکھا جا سکتا ہے کہ ہم آؤٹ پٹ کو a پر ری ڈائریکٹ کر رہے ہیں۔ debug_report.log فائل کا استعمال کرتے ہوئے عملدرآمد کمانڈ فائل ڈسریکٹر 5 (FD5) کے ساتھ۔

exec 5> debug_report.log: کی عملدرآمد کمانڈ شیل میں ہونے والی ہر چیز کو فائل میں ری ڈائریکٹ کر رہی ہے۔ debug_report.log.

BASH_XTRACEFD = 5: یہ ایک ہے خاص bash متغیر اور کسی دوسرے شیل میں استعمال نہیں کیا جا سکتا۔ اسے ایک درست فائل ڈسریکٹر تفویض کرنے کی ضرورت ہے ، اور باش نکالا ہوا آؤٹ پٹ لکھے گا۔ debug_report.log.

PS4 = '$ LINENO– ': یہ ایک باش متغیر بھی ہے جو ایکسٹریس موڈ کا استعمال کرتے ہوئے ڈیبگ کرتے ہوئے لائن نمبر پرنٹ کرنے کے لیے استعمال ہوتا ہے۔ PS4 کی ڈیفالٹ ویلیو ہے۔ + نشان

مذکورہ اسکرپٹ ایک لاگ فائل پیدا کر رہا ہے جسے بلایا جاتا ہے۔ debug_report.log ، اسے پڑھنے کے لیے ، استعمال کریں۔ کیٹ کمانڈ:

نتیجہ:

کیڑوں سے بھرا کوڈ پروگرام کی کارکردگی کو متاثر کرسکتا ہے اور ہارڈ ویئر کے لیے بھی نقصان دہ ہے۔ ڈیبگنگ ہر پروگرام کے لیے بہت اہم ہے کیونکہ یہ پروگرام کو زیادہ موثر بناتا ہے۔ کسی پروگرام کی ترقی کے دوران موجودہ اور ممکنہ غلطیوں کو تلاش کرنا آپ کے پروگرام کو غیر متوقع طور پر برتاؤ سے روک سکتا ہے۔ بڑے کوڈز کو عام طور پر فعال ڈیبگنگ کی ضرورت ہوتی ہے ، کوڈ کے استعمال کرنے والے حصوں کو ختم کرکے کوڈ کی تاثیر کو بڑھاتا ہے۔

بہت سی پروگرامنگ زبانوں اور ماحولیات کے اپنے ساتھی ڈیبگر ہوتے ہیں۔ بش سکرپٹنگ میں ، اسکرپٹ کو ڈیبگ کرنے کے لیے مختلف تکنیکوں کو لاگو کیا جا سکتا ہے۔ اس گائیڈ نے ان تمام طریقوں پر پوری توجہ مرکوز کی ہے جو بش سکرپٹ میں کیڑے تلاش کرنے کے لیے استعمال کیے جا سکتے ہیں۔ لہذا جب بھی آپ کو لگتا ہے کہ آپ کا بش اسکرپٹ توقع کے مطابق برتاؤ نہیں کر رہا ہے ، اوپر بیان کردہ کسی بھی تکنیک کا استعمال کریں ، لیکن xtrace موڈ (-x) زیادہ تر معاملات میں کافی مددگار ہے۔