$ () اور $ {} شیل اسکرپٹ میں توسیع کا استعمال کیسے کریں۔

How Use Expansions Shell Script



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

اس ٹیوٹوریل میں ، ہم شیل سکرپٹ میں استعمال ہونے والے دو انتہائی مفید بش توسیع کی وضاحت کریں گے۔







  • $ () - کمان کا متبادل۔
  • $ {} - پیرامیٹر متبادل/متغیر توسیع۔

شیل میں توسیع اسکرپٹ پر ٹوکن میں تقسیم ہونے کے بعد کی جاتی ہے۔ ایک ٹوکن حروف کی ایک ترتیب ہے جسے شیل کے ذریعہ ایک اکائی سمجھا جاتا ہے۔ یہ یا تو ایک لفظ یا آپریٹر ہو سکتا ہے۔



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







ایپلیکیشن لانچر تک رسائی حاصل کرنے کے لیے ، اپنے کی بورڈ پر سپر/ونڈوز کی کو دبائیں۔

$ () کمانڈ متبادل۔

سرکاری GNU بش ریفرنس دستی کے مطابق:



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

$(کمانڈ)
یا
'کمانڈ'

مثال کے طور پر ، مندرجہ ذیل ایکو کمانڈز ڈیٹ کمانڈ کے آؤٹ پٹ کو ان پٹ کے طور پر تبدیل کرتی ہیں۔

$باہر پھینک دیا$(تاریخ)
$باہر پھینک دیا'تاریخ'

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

$آج= $۔(تاریخ)
$باہر پھینک دیا 'آج $'

کمانڈ کے متبادل کی ایک اور افادیت ان پٹ حاصل کرنے کے لیے شیل لوپس میں ہے۔ یہاں ، ہم اپنے ہوم فولڈر میں تمام .txt فائلوں کو کمانڈ متبادل کے ذریعے پرنٹ کرنے کی کوشش کریں گے۔

کے لیےfمیں /گھر/آپ کو/ *.TXT
کیا
باہر پھینک دیا '$ f'
ہو گیا

شیل سکرپٹ میں کمانڈ متبادل کا استعمال

مندرجہ بالا مثالیں چند طریقے ہیں جن کے ذریعے آپ اپنے شیل اسکرپٹ میں کمانڈ متبادل کی طاقت استعمال کر سکتے ہیں۔ یہاں ایک نمونہ اسٹیٹس رپورٹ ہے جسے ہم درج ذیل شیل اسکرپٹ کا استعمال کرتے ہوئے پرنٹ کرسکتے ہیں۔

#!/بن/ش۔

باہر پھینک دیا ***سٹیٹس رپورٹ۔***

آج= $۔(تاریخ)
باہر پھینک دیا 'آج ہےآج $'

صارفین= $۔(ڈبلیو ایچ او | ڈبلیو سی-)
باہر پھینک دیا '$ USERS۔صارفین فی الحال لاگ ان ہیں '

اپ ٹائم۔= $۔(تاریخ؛اپ ٹائم)
باہر پھینک دیا 'اپ ٹائم ہے۔$ UPTIME۔'

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

اسے قابل عمل بنایا اور پھر اسے درج ذیل کمانڈ کے ذریعے چلایا:

$chmod+ x status.sh
$./statys.sh

یہاں ہماری status.sh اسکرپٹ کی پیداوار ہے:

یقینا You آپ نے ان مثالوں پر عمل کر کے مزید معنی خیز سکرپٹ بنا سکتے ہیں جن کا ہم نے ابھی ذکر کیا ہے۔

$ {} پیرامیٹر متبادل/توسیع۔

ایک پیرامیٹر ، بش میں ، ایک ایسی ہستی ہے جو اقدار کو ذخیرہ کرنے کے لیے استعمال ہوتی ہے۔ ایک پیرامیٹر کا حوالہ نمبر ، نام ، یا کسی خاص علامت سے دیا جا سکتا ہے۔ جب کسی پیرامیٹر کو کسی نمبر سے حوالہ دیا جاتا ہے تو اسے a کہتے ہیں۔ پوزیشنل پیرامیٹر . جب کسی پیرامیٹر کا حوالہ کسی نام سے دیا جاتا ہے تو اسے a کہا جاتا ہے۔ متغیر . جب کسی پیرامیٹر کا حوالہ کسی خاص علامت سے دیا جاتا ہے تو اس کا مطلب ہے کہ وہ خاص استعمال کے ساتھ آٹو سیٹ پیرامیٹرز ہیں۔

پیرامیٹر توسیع/متبادل حوالہ شدہ ہستی/پیرامیٹر سے قیمت حاصل کرنے کا عمل ہے۔ یہ ایسا ہی ہے جیسے آپ ایک متغیر کو بڑھا رہے ہیں تاکہ اس کی قیمت حاصل کی جا سکے۔

آسان ترین پیرامیٹر توسیع نحو درج ذیل ہے:

یہاں ہے کہ آپ بش میں پیرامیٹر کی توسیع کو کس طرح استعمال کرسکتے ہیں۔

$ {پیرامیٹر}

مثال کے طور پر ، سب سے آسان استعمال پیرامیٹر کو اس کی قیمت سے بدلنا ہے۔

$نام='جان ڈو'
$باہر پھینک دیا $ {name}

یہ کمانڈ ایکو کمانڈ کے ذریعہ استعمال ہونے والے متغیر نام کی قدر کو بدل دے گی۔

آپ شاید یہ سوچ رہے ہوں گے کہ گھوبگھرالی منحنی خطوط وحدانی سے بچ کر اسی طرح حاصل کیا جاسکتا ہے:

جواب یہ ہے کہ پیرامیٹر توسیع کے دوران ، یہ گھوبگھرالی منحنی خطوط وحدانی نام کی حد بندی میں مدد کرتے ہیں۔ آئیے وضاحت کرتے ہیں کہ یہاں محدود کرنے سے ہمارا کیا مطلب ہے۔ مجھے اپنے سسٹم پر درج ذیل کمانڈ چلانے دیں۔

$باہر پھینک دیا 'اس شخص کا نام ہے۔$ name_'

نتیجہ نے متغیر نام کی قیمت نہیں چھاپی کیونکہ سسٹم نے سوچا کہ میں متغیر نام_ کا حوالہ دے رہا ہوں۔ اس طرح ، میرا متغیر نام محدود نہیں تھا۔ مندرجہ ذیل مثال میں گھوبگھرالی منحنی خطوط وحدانی متغیر نام کی حد بندی کرے گا اور نتائج کو درج ذیل میں لوٹائے گا:

$باہر پھینک دیا 'اس شخص کا نام ہے۔$ {name}_ '

شیل میں متغیرات کو تبدیل کرنے کے تمام طریقے یہ ہیں:

$ {متغیر} یہ کمانڈ متغیر کی قدر کو بدل دیتی ہے۔
$ {متغیر: -word} اگر ایک متغیر کالعدم ہے یا اگر یہ سیٹ نہیں ہے تو ، لفظ متغیر کے لیے تبدیل کیا جاتا ہے۔ متغیر کی قدر تبدیل نہیں ہوتی۔
$ {متغیر: = لفظ} اگر ایک متغیر کالعدم ہے یا اگر یہ سیٹ نہیں ہے تو ، متغیر کی قیمت لفظ پر مقرر ہے۔
$ {متغیر:؟ پیغام} اگر ایک متغیر کالعدم ہے یا اگر یہ سیٹ نہیں ہے تو ، پیغام معیاری بش غلطی پر چھاپا جاتا ہے۔
$ {متغیر:+لفظ} اگر متغیر سیٹ ہے ، لفظ متغیر کے لیے بدل دیا گیا ہے۔ تاہم ، متغیر کی قدر خود تبدیل نہیں ہوتی ہے۔

مندرجہ بالا مثالیں چند طریقے ہیں جن سے آپ بش میں متغیر متبادل کی طاقت کو استعمال کر سکتے ہیں۔ آپ اپنے شیل اسکرپٹس میں توسیع کو استعمال کرنے کے ان طریقوں کو شامل کر سکتے ہیں تاکہ آپ اپنے کام کو بہتر طریقے سے حاصل کر سکیں۔