انڈروئد

بش افعال

Ù...غربية Ù...ع عشيقها في السرير، شاهد بنفسك

Ù...غربية Ù...ع عشيقها في السرير، شاهد بنفسك

فہرست کا خانہ:

Anonim

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

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

بش تقریب کا اعلامیہ

باش فنکشن کا اعلان کرنے کا نحو بہت آسان ہے۔ ان کا اعلان دو مختلف شکلوں میں کیا جاسکتا ہے:

  1. پہلا فارمیٹ فنکشن کے نام سے شروع ہوتا ہے ، اس کے بعد قوسین ہوتے ہیں۔ یہ ترجیحی اور زیادہ استعمال شدہ شکل ہے۔

    function_name () { commands }

    ایک لائن ورژن:

    function_name () { commands; }

    دوسرا فارمیٹ فنکشن کے نام کے بعد function محفوظ شدہ لفظ سے شروع ہوتا ہے۔

    function function_name { commands }

    ایک لائن ورژن:

    function function_name { commands; }

نوٹ کرنے کے لئے کچھ نکات:

  • گھوبگھرالی منحنی خطوط وحدانی ces between کے درمیان کمانڈ فہرست فنکشن کا باڈی ہے۔ گھوبگھرالی منحنی خطوط و ضوابط جو جسم کے گرد گھیر لیتے ہیں ان کو خالی جگہوں یا نئی لائنوں کے ذریعہ جسم سے الگ کرنا چاہئے۔ فنکشن کی وضاحت کرنے سے اس پر عمل نہیں ہوتا ہے۔ باز فنکشن کی درخواست کرنے کے لئے ، صرف فنکشن کا نام استعمال کریں۔ جب بھی تقریب کو شیل اسکرپٹ میں بلایا جاتا ہے تو گھوبگھرالی منحنی خطوط وحدانی کے مابین کمانڈز پر عمل درآمد کیا جاتا ہے۔ فنکشن میں کسی بھی کال سے پہلے فنکشن ڈیفینیشن رکھنی چاہئے۔ جب سنگل لائن “کمپیکٹڈ” افعال استعمال کرتے ہیں تو ، ایک سیمیولن ; آپ کو فنکشن میں آخری کمانڈ پر عمل کرنا چاہئے۔ آپ کو ہمیشہ اپنے فنکشن کے ناموں کو وضاحتی رکھنے کی کوشش کرنی چاہئے۔

اس کو بہتر طور پر سمجھنے کے لئے ، درج ذیل مثال پر ایک نظر ڈالیں:

. / ہیلو_ورلڈ.شیس

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

آئیے لائن کے ذریعہ کوڈ لائن کا تجزیہ کریں:

  • لائن 3 ہم اس کا نام دے کر ، اور گھوبگھرالی منحنی خطوط وحدانی کھول کر اس کی تعریف کر رہے ہیں جو فنکشن کے جسم کے آغاز کا اشارہ کرتا ہے۔ لائن 4 فنکشن باڈی ہے۔ فنکشن باڈی ایک سے زیادہ کمانڈز اور متغیر اعلامیہ پر مشتمل ہوسکتی ہے۔ لائن 5 ، اختتامی گھوبگھرالی بریکٹ the ، hello_world فنکشن کے اختتام کی وضاحت کرتی ہے۔ لائن 7 ہم فنکشن کو انجام دے رہے ہیں۔ آپ جتنی دفعہ ضرورت ہو فنکشن کو انجام دے سکتے ہیں۔

اگر آپ اسکرپٹ چلاتے ہیں تو ، یہ hello, world پرنٹ کرے گا۔

متغیر کا دائرہ کار

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

مقامی متغیرات کو local کلیدی لفظ کے ساتھ فنکشن باڈی کے اندر اعلان کیا جاسکتا ہے اور صرف اس فنکشن کے اندر ہی استعمال کیا جاسکتا ہے۔ آپ مختلف افعال میں ایک ہی نام کے ساتھ مقامی متغیر کرسکتے ہیں۔

بہتر انداز میں یہ بتانے کے لئے کہ بش میں متغیرات کا دائرہ کار کس طرح کام کرتا ہے ، آئیے ایک مثال پر غور کریں:

vari / متغیرات_کوپ.ش

#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"

اسکرپٹ دو عالمی متغیرات var1 اور var2 کی وضاحت کرکے شروع ہوتا ہے۔ پھر ایک ایسا فنکشن جو مقامی متغیر var1 کرتا ہے اور عالمی متغیر var2 ترمیم کرتا ہے۔

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

مندرجہ بالا آؤٹ پٹ سے ، ہم یہ نتیجہ اخذ کرسکتے ہیں کہ:

  • اگر آپ موجودہ عالمی متغیر کے نام سے ایک ہی نام کے ساتھ فنکشن باڈی کے اندر ایک مقامی متغیر مرتب کرتے ہیں تو ، اس کی عالمی متغیر پر فوقیت ہوگی۔ گلوبل متغیر کو فعل کے اندر سے تبدیل کیا جاسکتا ہے۔

ریٹرن ویلیوز

"اصلی" پروگرامنگ زبانوں میں افعال کے برعکس ، باش فنکشنز آپ کو کال کرنے پر کوئی قیمت واپس کرنے کی اجازت نہیں دیتی ہیں۔ جب کسی باز فنکشن کی تکمیل ہوتی ہے تو ، اس کی واپسی کی قیمت فنکشن میں پائے جانے والے آخری بیان کی حیثیت ہوتی ہے ، 0 کامیابی کے لئے 0 اور ناکامی کے ل 25 1 - 255 کی حد میں غیر صفر اعشاریے کی تعداد۔

واپسی کی حیثیت کو return مطلوبہ الفاظ کا استعمال کرکے بیان کیا جاسکتا ہے ، اور یہ متغیر to کو تفویض کیا جاتا ہے $? . return بیان سے فنکشن ختم ہوجاتا ہے۔ آپ اس کے بارے میں فنکشن کی خارجی حیثیت کے بارے میں سوچ سکتے ہیں۔

return / return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

واقعی کسی فنکشن سے من مانی قیمت واپس کرنے کے ل we ، ہمیں دوسرے طریقے استعمال کرنے کی ضرورت ہے۔ آسان ترین آپشن یہ ہے کہ اس تقریب کا نتیجہ عالمی متغیر کو تفویض کیا جائے۔

return / return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

دوسرا ، کسی فنکشن سے ویلیو واپس کرنے کا بہتر آپشن یہ ہے کہ نیچے کی گئی ایکو یا stdout کا استعمال کرتے ہوئے stdout پر ویلیو بھیجیں۔

return / return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

اس func_result آؤٹ پر میسج پرنٹ کرنے والے فنکشن پر عمل کرنے کے بجائے ، ہم فنکشن آؤٹ پٹ کو func_result متغیر کو تفویض کر رہے ہیں func_result $() کمانڈ متبادل کو استعمال کرتے ہوئے۔ متغیر کو بعد میں ضرورت کے مطابق استعمال کیا جاسکتا ہے۔

بش افعال میں دلائل پاس کرنا

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

  • منظور شدہ پیرامیٹرز $1 ، $2 ، $3 $n ، جو فنکشن کے نام کے بعد پیرامیٹر کی پوزیشن کے مطابق ہیں۔ $0 متغیر فنکشن کے نام کے لئے مختص ہے۔ vari $# متغیر میں پوزیشن والے پیرامیٹرز / دلائل کی تعداد ہوتی ہے فنکشن۔ $* اور $@ متغیر کے پاس فنکشنل میں منتقل کردہ تمام پوزیشنل پیرامیٹرز / دلائل ہیں۔
    • جب ڈبل حوالہ دیا گیا تو ، "$*" جگہ سے الگ ایک ہی تار میں پھیل جاتا ہے (IFS کا پہلا حرف) - "$1 $2 $n" ۔جب ڈبل حوالہ دیا گیا تو ، "$@" الگ الگ تار میں پھیل جاتا ہے - "$1" "$2" "$n" جب دوہرا حوالہ نہیں دیا جاتا ہے تو ، $* اور $@ ایک جیسے ہوتے ہیں۔

یہاں ایک مثال یہ ہے:

passing / Pass_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

نتیجہ اخذ کرنا

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

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

بش ٹرمینل