April 26, 2012

ကိန်းရှင်များ

ကွန်ပျူတာ ပရိုဂရမ်မင်းဘာသာရပ် အတော်များများမှာ ပရိုဂရမ်အတွင်းတွင် အသုံးပြုနေသည့် တန်ဖိုးများကို အစားထိုးအသုံးပြုရန် ကိန်းရှင်များကို အသုံးပြုလေ့ရှိပါသည်။ ဘီရှဲတွင်လည်း ကိန်းရှင်များကို အသုံးပြု၍ ပရိုဂရမ်များကို ရေးသားနိုင်ပါသည်။ ကိန်းရှင်များအား အင်္ဂလိပ်စာလုံးများနှင့် _ စာလုံးကို အသုံးပြု၍ ရေးသား နိုင်ပါသည်။ သို့ရာတွင် ပဋ္ဌမဦးဆုံးစာလုံးအား ကိန်းဂဏာန်းများကို အသုံးပြု၍မရပေ။ ကိန်းရှင်များအား အစားထိုးအသုံးပြုရာတွင် = ကို အသုံးပြု၍ ကိန်းရှင်အား တန်ဖိုးဖြင့် အစားထိုးနိုင်ပါသည်။ သတိပြုရန် အချက်မှာ = ၏ ဘယ်ညာတွင် Blank စာလုံးကို အသုံးပြု၍ မရပါ။
#!/bin/sh

var="This is variable"

echo $var


အထက်ပါအတိုင်း $var ဟု ရေးသားခြင်း အားဖြင့် ကိန်းရှင်များ၏ တန်ဖိုးများအား အသုံးပြုနိုင်ပါသည်။ ထို့ကြောင့် echo $var ကွန်မန်း၏ ရလဒ်သည် this is variable ဟု ကိန်းရှင်၏ တန်ဖိုးကို echo လုပ်ပေးနိုင်ခြင်း ဖြစ်ပါသည်။


တန်ဖိုးသတ်မှတ်မထားသေးသော ကိန်းရှင်များအား အသုံးပြုခြင်း

B Shell တွင် ကိန်းရှင်တစ်လုံး၏ တန်ဖိုးသည် ဗလာဖြစ်သည့်အခါတွင်၎င်း၊ သတ်မှတ်ထားခြင်း မရှိသည့်အခါမျိုး တွင်၎င်း အမျိုးမျိုးသော လုပ်ဆောင်ချက်များကို လုပ်ဆောင်စေနိုင်ပါသည်။

ရေးသားပုံ တန်ဖိုးသတ်မှတ်ပြီးအခါ တန်ဖိုးသတ်မှတ်ထားခြင်း မရှိသောအခါ
${ကိန်းရှင်:-word} ကိန်းရှင်၏ တန်ဖိုးကို အသုံးပြုပါမည်။ word ၏ တန်ဖိုးအား အသုံးပြုပါမည်။
${ကိန်းရှင်:=word} ကိန်းရှင်၏ တန်ဖိုးကို အသုံးပြုပါမည်။ word ၏ တန်ဖိုးအား ကိန်းရှင်တွင် အစားထိုး၍ အသုံးပြုပါမည်။
${ကိန်းရှင်:?word} ကိန်းရှင်၏ တန်ဖိုးကို အသုံးပြုပါမည်။ word အား Error Message အဖြစ် အသုံးပြု၍ စကရစ်အား ပြီးဆုံးစေပါမည်။
${ကိန်းရှင်:+word} word ၏ တန်ဖိုးဖြင့် ကိန်းရှင်အား အစားထိုးပါမည်။ ဘာမှမလုပ်ပါ



${ကိန်းရှင်:-word}

#!/bin/sh

echo What is your name? $name
echo What is your name? ${name:-minlwin}
echo $name

name=kgkg
echo What is your name? ${name:-minlwin}


စာကြောင်း ၄ကြောင်းမြောက်တွင် name သည် တန်ဖိုးသတ်မှတ်ထားခြင်း မရှိပါသဖြင့် minlwin အား အစားထိုး အသုံးပြုသွားသည်ကို တွေ့ရပါမည်။ သို့ရာတွင် name အား အစားထိုးခြင်း မရှိပါသဖြင့် စာကြောင်း နံပါတ် ၅ ၏ echo $name ရဲ့ ရလဒ်မှာ ဗလာ အတိုင်းဖြစ်ပါသည်။

တဖန် စာကြောင်း ၇ တွင် name အား kgkg ဖြင့် အစားထိုးပါသည်။ ထို့ကြောင့် စာကြောင်း ၈ တွင် ${name:-minlwin} ဟု ရေးသားထားပါသော်လည်း name မှာ ဗလာ မဟုတ်ပါသောကြောင့် name ၏ တန်ဖိုးဖြစ်သော kgkg ကို ဖော်ပြနိုင်ခြင်း ဖြစ်ပါသည်။


${ကိန်းရှင်:=word}

#!/bin/sh

echo What is your name? $name
echo What is your name? ${name:=minlwin}
echo $name

name=kgkg
echo What is your name? ${name:=minlwin}
echo $name


စာကြောင်း၄ တွင် name ၏ တန်ဖိုးသည် သတ်မှတ်ထားခြင်းမရှိပါသဖြင့်၊ ${name:=minlwin} ဟု ရေးသားထားသောကြောင့် echo ၏ ရလဒ်မှာ minlwin အား အစားထိုး၍ အသုံးပြုသွားပါသည်။ တဖန် စာကြောင်း ၅ ၏ ရလဒ်ကို ကြည့်ခြင်းအားဖြင့် name ၏ တန်ဖိုးအား minlwin ဖြင့် အစားထိုးသွားသည်ကို တွေ့မြင် နိုင်ပါသည်။

တဖန် စာကြောင်း ၇ တွင် name အား kgkg ဖြင့် အစားထိုးပါသဖြင့်၊ စာကြောင်း၉တွင် name အစား minlwin ဖြင့် ဖော်ပြခြင်းမရှိသလို၊ စာကြောင်း ၁၀ အားကြည့်ခြင်းအားဖြင့် name ၏ တန်ဖိုးအား minlwin ဖြင့် အစားမထိုးကြောင်း တွေ့မြင်နိုင်ပါသည်။


${ကိန်းရှင်:?word}


#!/bin/sh

name=kgkg
echo What is your name? ${name:?minlwin}

name=
echo What is your name? ${name:?minlwin}


စာကြောင်း ၄ ၏ ရလဒ်သည် name ၏ တန်ဖိုးသည် kgkg ဖြစ်ပါသဖြင့် kgkg ကို ဖော်ပြပေးပါသည်။ စာကြောင်း ၇ ၏ ရလဒ်သည် စာကြောင်း ၆ တွင် name အား ဗလာဖြင့် အစားထိုးထားပါသဖြင့် Error Message အဖြင့် minlwin ကို ဖော်ပြပြီး၊ Script အား အမှားအဖြစ် ပြီးဆုံးစေပါသည်။


${ကိန်းရှင်:+word}

#!/bin/sh

name=kgkg
echo What is your name? ${name:+minlwin}
echo $name
name=
echo What is your name? ${name:+minlwin}


စာကြောင်း ၄၏ ရလဒ်သည် name တွင် kgkg ဟူသော တန်ဖိုးကို ပိုင်ဆိုင်သောကြောင့် minlwin ကို အစားထိုးဖော်ပြပါသည်။ သို့ရာတွင် စာကြောင်း ၇ ၌မှု name ၏ တန်ဖိုးမှာ ဗလာဖြစ်ပါသဖြင့် minlwin ဖြင့် အစားထိုးဖော်ပြခြင်း မရှိသည်ကို တွေ့ရပါမည်။

ဆက်လက် လေ့လာဖော်ပြသွားပါဦးမည်။

လေးစားစွာဖြင့်
မင်းလွင်

No comments:

Post a Comment