بش - اسکرپٹ میں دلیلوں کو کیسے منتقل کرنا ہے

حکم، نحو اور مثالیں

آپ ایک بش اسکرپٹ لکھ سکتے ہیں جیسے کہ یہ لکھا جاتا ہے جب سکرپٹ کو کمانڈ لائن سے بلایا جاتا ہے. یہ طریقہ استعمال ہوتا ہے جب ایک سکرپٹ کو ان پٹ پیرامیٹرز (دلائل) کے اقدار کے لحاظ سے تھوڑا سا مختلف فنکشن انجام دینا پڑتا ہے.

مثال کے طور پر، آپ کو "stats.sh" نامی اسکرپٹ کی ضرورت ہوسکتی ہے جو فائل پر ایک مخصوص آپریشن کرتی ہے، جیسے اس کے الفاظ شمار کرنا. اگر آپ بہت سارے فائلوں پر اس سکرپٹ کو استعمال کرنے کے قابل ہو تو، فائل کا نام ایک دلیل کے طور پر منظور کرنا بہتر ہے، تاکہ آپ عملدرآمد کے لئے تمام فائلوں کے لئے ایک ہی اسکرپٹ کا استعمال کرسکتے ہیں. مثال کے طور پر، اگر فائل کا عمل عملدرآمد کی جائے تو "گانا لسٹ" ہے، آپ درج ذیل کمانڈر درج کریں گے:

شیٹس

متغیر $ 1، $ 2، $ 3، وغیرہ وغیرہ کا استعمال کرتے ہوئے ایک سکرپٹ کے اندر اندر خطوط تک رسائی حاصل ہوتی ہے، جہاں $ 1 پہلی دلیل سے مراد ہے، دوسرا دلیل $ 2، اور اسی طرح. مندرجہ ذیل مثال میں یہ بیان کیا جاتا ہے:

فائل 1 = $ 1 wc $ فائل 1

پڑھنے کی اہلیت کے لئے، ایک متغیر نام کے ساتھ متغیر نام کو پہلی دلیل ($ 1) کی قدر پر تفویض کریں، اور پھر اس متغیر ($ FILE1) پر لفظ شمار کی افادیت ( ڈبلیو سی ) کو کال کریں.

اگر آپ کے دلائل کی متغیر تعداد ہے تو، آپ "$ @" متغیر استعمال کرسکتے ہیں، جو تمام ان پٹ پیرامیٹرز کی ایک صف ہے. اس کا مطلب یہ ہے کہ آپ ہر ایک پر عملدرآمد کرنے کے لئے فاسٹ استعمال کرسکتے ہیں، جیسا کہ مندرجہ ذیل مثال میں بیان کیا گیا ہے:

"$ @" میں FILE1 کیلئے WC $ FILE1 کیا ہے

یہاں ایک مثال یہ ہے کہ کمانڈ لائن سے دلائل کے ساتھ اس سکرپٹ کو کس طرح کال کریں:

اس تصویر پر آپ پہلے ہی غلط استعمال کی رپورٹ کر چکے / چکی ہیں

اگر ایک دلیل خالی جگہ ہے تو، آپ کو ایک سنگل کوٹ کے ساتھ اس کو بند کرنے کی ضرورت ہے. مثال کے طور پر:

sh stats.sh 'گیت فہرست 1' 'گیت فہرست 2' 'گیت فہرست 3'

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

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

makereport-u jsmith -p نوٹ بکس - ڈی 10-20-2011 -f پی ڈی ایف

بش نے "فعالیت" کے فنکشن کے ساتھ اس فعالیت کو قابل بناتا ہے. مندرجہ بالا مثال کے طور پر، آپ مندرجہ ذیل اسٹوپٹس استعمال کرسکتے ہیں:

یہ تھوڑی دیر کے بعد لوک ہے جس میں "لے آؤٹپٹس" تقریب اور نام نہاد "آپریٹر" کا استعمال ہوتا ہے، اس صورت میں "آپ: d: p: f:"، اس دلائل کے ذریعے آگاہ کرنے کے لئے. لیپ ٹاپ آپریٹرنگ کے ذریعے چلتا ہے، جس میں جھنگوں کو جو دلیلوں کو منتقل کرنے کے لئے استعمال کیا جا سکتا ہے، اور متغیر "اختیار" میں اس پرچم کے لئے فراہم کردہ دلیل کی قیمت کو تفویض کرتا ہے. اس کیس کے بیان میں عالمی متغیر کے قابل متغیر "اختیار" کی قیمت تفویض ہوتی ہے جس کے بعد تمام دلائل پڑھنے کے بعد استعمال کیا جا سکتا ہے.

آپریٹنگ میں رنگوں کا مطلب ہے کہ اسی پرچموں کے لئے اقدار کی ضرورت ہوتی ہے. مندرجہ بالا مثال کے طور پر تمام پرچم ایک کالونی کے بعد ہیں: "u: d: p: f:". اس کا مطلب ہے، تمام پرچم ایک قدر کی ضرورت ہے. اگر، مثال کے طور پر، "ڈی" اور "ایف" جھنگوں کو ایک قدر ہونے کی توقع نہیں کی گئی تھی، آپریٹرنگ "u: dp: f" ہوگی.

آپٹسٹنگ کے آغاز میں ایک کالونی، مثال کے طور پر "آپ: d: p: f:"، ایک مکمل طور پر مختلف معنی ہے. یہ آپ کو آپریٹنگ میں نمائندگی نہیں کی جھنگوں کو ہینڈل کرنے کی اجازت دیتا ہے. اس صورت میں "اختیار" متغیر کی قیمت "سیٹ" کے لئے مقرر کیا گیا ہے. اور "OPTARG" کی قیمت غیر متوقع پرچم پر مقرر کی گئی ہے. غلطی کے صارف کو مطلع کرنے کے لئے آپ کو مناسب غلطی پیغام ظاہر کرنے کی اجازت دیتا ہے.

ایسے پرچم جو پہلے سے ہی پرچم کی طرف سے نہیں جاتے ہیں، اس کے پاس رسی کے ذریعہ نظر انداز نہیں ہوتے ہیں. اگر آپریٹرنگ میں بیان کردہ جھنگوں کو لکھا جاتا ہے جب اسکرپٹ کو بلایا جاتا ہے، کچھ بھی نہیں ہوتا، جب تک آپ اس کیس کو اپنے کوڈ میں نہیں سنبھال لیں. رسیپوں کی طرف سے سنبھالنے والے کوئی دلائل اب بھی باقاعدگی سے $ 1، $ 2، وغیرہ متغیر کے ساتھ قبضہ کر سکتے ہیں.