Bash ရန် Beginners လမ်းညွှန် - အခြေအနေများနှင့် Variables ကို

နိဒါန်း

သည် "Bash ရန် Beginners လမ်းညွှန်" ၏သုံးစုတစုမှလှိုက်လှဲစွာကြိုဆိုပါသည်။ သငျသညျယခင်နှစ်ခုဆောင်းပါးများကိုလွဲချော်ခဲ့ကြလျှင်သင်ဖြစ်နိုင်သည်အခြား Bash scripting နည်းလမ်းညွှန်များမှဒီလမ်းညွှန်ကွဲပြားခြားနားသောစေသည်ဘာကိုသိလိုပါလိမ့်မယ်။

ဒီလမ်းညွှန် Bash ဖို့နဲ့ဒါငါသင်ယူသကဲ့သို့သင်တို့ကိုသင်ယူနေတဲ့စာဖတ်သူအဖြစ်ပြည့်စုံအတွေ့အကြုံမရှိသေးသောကရေးသားလျက်ရှိသည်။ ငါရေးထားပြီသောပစ္စည်းပစ္စယအများစုကို Windows ပလက်ဖောင်းများအတွက်ခဲ့ပေမယ့်ငါ software development နောက်ခံကနေလာကြဘူး Bash တစ်ဦးအတွေ့အကြုံမရှိသေးသောဖြစ်ကြောင်းကိုနေတုန်း။

သငျသညျသွားရောက်ခြင်းအားဖြင့်ပထမဦးဆုံးနှစ်ဦးကိုလမ်းပြတွေ့မြင်နိုင်သည်

သငျသညျကား Bash scripting နည်းအသစ်ရောက်နေတယ်ဆိုရင်ငါဒီတစ်ခုနှင့်အတူဆက်လက်မလုပ်ဆောင်မီပထမဦးဆုံးနှစ်ဦးကိုလမ်းပြသောဖတ်နေအကြံပြုပါသည်။

ဒီလမ်းညွှန်ချက်ထဲမှာငါစမ်းသပ်အသုံးပြုသူ input ကိုမှခြွင်းချက်ထုတ်ပြန်ချက်များကိုအသုံးပြုရန်နှင့်မည်သို့ဇာတ်ညွှန်းလုပ်ဆောင်ချက်များကိုထိန်းချုပ်ဖို့ဘယ်လိုမီးမောင်းထိုးပြပါလိမ့်မည်။

rsstail Install

ဒီလမ်းညွှန်အတိုင်းလိုက်နာနိုင်ရန်အတွက်သင်ဖတ်ရန်အသုံးပြုသည့် rsstail ဟုခေါ်တွင်ပြီး command line application ကို install လုပ်ဖို့လိုအပ်ပါလိမ့်မယ် RSS feeds

သင်တစ်ဦးကိုအသုံးပြုပြီးနေတယ်ဆိုရင် Debian / Ubuntu ကို / Mint, based ဖြန့်ဖြူးအောက်ပါရိုက်ထည့်:

sudo rsstail install apt-get

အဘို့ ကို Fedora / CentOS စသည်တို့အောက်ပါရိုက်ထည့်:

yum rsstail install

အဘို့ တော့ OpenSUSE အောက်ပါရိုက်ထည့်:

zypper rsstail install

အဆိုပါ IF ကြေညာချက်

Terminal ကိုဖွင့်ကိုဖွင့်, အောက်ပါစာရိုက်ခြင်းဖြင့် rssget.sh လို့ခေါ်တဲ့ဖိုင်ဖန်တီး:

sudo nano rssget.sh

အဆိုပါ nano အယ်ဒီတာအတွင်းအောက်ပါစာသားကိုရိုက်ထည့်ပါ:

#! / bin / ကား Bash
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;

CTRL နှင့်အိုကိုနှိပ်ခြင်းအားဖြင့် file ကို Save ပြီးရင် CTRL နှင့် X တို့မှာနှိပ်ခြင်းဖြင့်ထွက်ပေါက်

အောက်ပါစာရိုက်ခြင်းအားဖြင့် script ကို run:

rssget.sh sh

အဆိုပါ script ကိုပု linux.about.com RSS feed ကနေခေါင်းစဉ်များစာရင်းကိုပြန်လာပါလိမ့်မယ်။

ဒါကြောင့်ကိုယ့်တဦးတည်းကို RSS feed ကိုကနေခေါင်းစဉ်ရယူပေမယ့်က Linux.about.com RSS feed မှလမ်းကြောင်းကိုမှတ်မိဖို့ရှိခြင်းကယ်တင်ပါဘူးဘာဖြစ်လို့လဲဆိုတော့ဒါဟာအလွန်အမင်းအသုံးဝင်သော script ကိုမဟုတ်ပါဘူး။

နောက်တဖန် nano အတွက် rssget.sh script ကိုဖွင့်ခြင်းနှင့်အောက်ပါအတိုင်းကြည့်ဖို့ဖိုင်ကိုတည်းဖြတ်:

#! / bin / ကား Bash

[$ 1 = "verbose"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
fi

အောက်ပါစာရိုက်ခြင်းဖြင့်ပြန် script ကို run:

verbose rssget.sh sh

ဒါဟာအချိန်ကို RSS feed ကိုခေါင်းစဉ်, လင့်နှင့်ဖော်ပြချက်နှင့်အတူပြန်လာပါသည်။

ရဲ့အသေးစိတ်နည်းနည်းအတွက် script ကိုခွဲခြမ်းစိတ်ဖြာကြစို့:

အဆိုပါ #! / bin / ကား Bash ငါတို့သည်ရေးလိုက်တိုင်း script ကိုထဲမှာပေါ်လာလိမ့်မယ်။ နောက်တစ်နေ့လိုင်းအခြေခံအားဖြင့်အသုံးပြုသူများကထောက်ပံ့ပေးပထမဦးဆုံး input ကို parameter သည်ကြည့်နှင့် "verbose" ဟုအဆိုပါစကားလုံးကနှိုင်းယှဉ်။ အဆိုပါ input ကို parameter သည်နှင့်စကားလုံးက "verbose" လျှင်နှင့် fi အကြားလိုင်းများသို့ပွေးလေ၏နေကြသည်တိုက်စစ်ပါတယ်။

အထက်ပါ script ကိုသိသာချို့ယွင်းချက်ဖြစ်ပါတယ်။ သငျသညျမှာအားလုံးအနေနဲ့ input ကို parameter သည်မပေးကြပါလျှင်ဘာဖြစ်မည်နည်း အဖြေကိုသင်မမျှော်လင့်ဘဲအော်ပရေတာများ၏လိုင်းများတလျှောက်တွင်မှားယွင်းမှုတစ်ခုရဖို့ဖြစ်ပါတယ်။

အခြားအဓိကအားနည်းချက်သင်စကားလုံး "verbose" မပေးပါဘူးလျှင်ဘာမျှမမှာအားလုံးဖြစ်ပျက်သောကွောငျ့ဖွစျသညျ။ အကောင်းဆုံးကတော့သင်စကားလုံးမပေးကြပါလျှင်ဇာတ်ညွှန်းခေါင်းစဉ်များစာရင်းကိုပြန်စလာမယ်ဆိုတဲ့ verbose ။

အောက်မှာဖေါ်ပြတဲ့အတိုင်း rssget.sh file ကို edit နဲ့ code ကိုပြင်ဆင်ရန်တဖန် nano ကိုသုံးပါ:

#! / bin / ကား Bash

[$ 1 = "verbose"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

ဖိုင်ကို Save နှင့်အောက်ပါအချက်များကိုစာရိုက်ဖြင့် run:

verbose rssget.sh sh

ခေါင်းစဉ်, ဖော်ပြချက်များနှင့်လင့်များစာရင်းတစ်ခုပေါ်လာပါလိမ့်မယ်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်း Now ကိုပြန် run:

sh rssget.sh ခေါင်းစဉ်

ဤအချိန်ခေါင်းစဉ့်စာရင်းပေါ်လာပါသည်။

ဇာတ်ညွှန်း၏အပိုစိတျအပိုငျးလိုင်း 4 ရက်နေ့နှင့်အခြားကြေညာချက်ကိုမိတ်ဆက်။ အခြေခံအားဖြင့် script ကိုယခုပထမဦးဆုံး parameter သည်နှုတ်ကပတ်တရားတော်ကို "verbose" ဟုအဆိုပါ RSS feed များအတွက်ဖော်ပြချက်, လင့်များနှင့်ခေါင်းစဉ်အရပေမယ့်ပထမဦးဆုံး parameter သည်အရာအားလုံးထက်လျှင်ပဲခေါင်းစဉ်များစာရင်းကို get လျှင်ကပြောပါတယ်။

အဆိုပါ script ကိုအနည်းငယ်တိုးတက်ကောင်းမွန်ပေမယ့်နေဆဲချို့ယွင်းချက်ဖြစ်ပါတယ်။ သင်တစ်ဦး parameter သည်ရိုက်ထည့်ရန်ပျက်ကွက်ခဲ့လျှင်သင်ဆဲမှားယွင်းမှုတစ်ခုရလိမ့်မယ်။ သင်တစ်ဦး parameter သည်များကိုပြုပါရင်တောင်ကိုယ့်ကိုသင် verbose ချင်ကြဘူးဟုအားဖြင့်သင်တို့ကိုသာခေါင်းစဉ်ချင်မဆိုလိုပါ။ သင်ရုံဥပမာ verbose မှားယွင်းတဲ့စာလုံးပေါင်းခဲ့ကြပေမည်သို့မဟုတ်သင်သင်တန်းအနတ္တဖြစ်၏ရာခိုရိုက်ကြပေမည်။

ကျနော်တို့ကိုသင်တို့အားငါ IF ကြေညာချက်နှင့်အတူဝင်တပိုပြီး command ကိုပြသချင်သည်ဤကိစ္စများပါရှင်းလင်းခြင်းမပြုမီ။

အောက်မှာဖေါ်ပြတဲ့အတိုင်းကြည့်ရှုရန်သင့် rssget.sh script ကို Edit:

#! / bin / ကား Bash

[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://z.about.com/6/o/m/linux_p2.xml;

အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

ငါ verbose နှုတ်ကပတ်တော်ကိုဖယ်ရှားပစ်ရရန်ဆုံးဖြတ်ခဲ့သည်အပေါင်းတို့နှင့်အတူကအစားထိုး။ ဒါကအရေးကြီးသောအစိတ်အပိုင်းတစ်ခုမဟုတ်ပါဘူး။ အပေါ်က script ကို IF မည်သူမဆိုဟု၏တိုတောင်းတဲ့လမ်းဖြစ်သည့် elif မိတ်ဆက်။

အောက်မှာဖေါ်ပြတဲ့အတိုင်းအခု script ကိုအလုပ်လုပ်ပါတယ်။ သင်တို့ရှိသမျှသည်ထို့နောက် sh rssget.sh run အကယ်. ဖော်ပြချက်, လင့်များနှင့်ခေါင်းစဉ်အရ။ သင်ရုံ sh rssget.sh ဖော်ပြချက် run မယ့်အစား အကယ်. သင်ရုံခေါင်းစဉ်နှင့်ဖော်ပြချက်အရပါလိမ့်မယ်။ သငျသညျမဆိုအခြားစကားလုံးထောက်ပံ့ အကယ်. ခေါင်းစဉ်များစာရင်းကိုရပါလိမ့်မယ်။

ဤသည်လျင်မြန်စွာခြွင်းချက်ထုတ်ပြန်ချက်များများစာရင်းကိုအတူတက်လာမယ့်တစ်ဦးလမ်းကိုမိတ်ဆက်။ ELIF လုပ်နေတာတစ်ခုအခြားလမ်း IF အသိုက်ထုတ်ပြန်ချက်များအဖြစ်လူသိများသည်အဘယ်အရာကိုသုံးစွဲဖို့ဖြစ်ပါတယ်။

အောက်ပါထုတ်ပြန်ချက်များမည်သို့အလုပ်လုပ်အသိုက် IF ဖေါ်ပြခြင်းဥပမာတစ်ခုဖြစ်ပါသည်:

#! / bin / ကား Bash

[$ 2 = "aboutdotcom"] လျှင်
ထိုအခါ
[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://z.about.com/6/o/m/linux_p2.xml;

အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
အခြားသူ
[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi

သင်ကြိုက်နှစ်သက်သို့မဟုတ်ကူးယူလျှင်အားလုံးကြောင်းရိုက်ထည့်ဖို့အခမဲ့ခံစားရနှင့်သင့် rssget.sh ဖိုင်ထဲသို့ paste ။

အထက်ပါ script ကိုသင် "about.com" သို့မဟုတ် "lxer.com" တစ်ဦးတစ်ဦးကို RSS feed ကိုဖြစ်စေရှေးခယျြပေးနိုင်ပါတယ်သော 2nd parameter သည်ကိုမိတ်ဆက်။

အောက်ပါ၌သငျအမျိုးအစားက run ရန်:

rssget.sh sh အားလုံး aboutdotcom

သို့မဟုတ်

အားလုံး lxer rssget.sh sh

သငျသညျသင်တန်းဖွင့်ဖော်ပြချက်သို့မဟုတ်ပဲခေါင်းစဉ်များကိုဖော်ပြချက်သို့မဟုတ်ခေါင်းစဉ်နှင့်အတူအားလုံးကိုအစားထိုးနိုင်ပါတယ်။

ဒုတိယ parameter သည်ဖော်ပြချက်, aboutdotcom ထို့နောက်ဒုတိယ parameter သည်ခေါင်းစဉ်ပြသနိုင်ဖို့ရှိမရှိဆုံးဖြတ်ရန်ပြန်လျှင်အတွင်းပိုင်းကြေညာချက်ကိုကြည့်ပြီးတော့ lxer လျှင်အခြားယခင်ဇာတ်ညွှန်းထဲကနေအတူတူပင်တဦးတည်းသောမယ်ဆိုရင်ဒုတိယကြေညာချက်ကိုကြည့်ပါလျှင်အခြေခံအားဖြင့်အထက်ပါကုဒ်ကပြောပါတယ် သို့မဟုတ်အရာအားလုံး။

အဲဒီ script ကိုတစ်ဦးလျှင်အသိုက်ကြေညာချက်၏ဥပမာတစ်ခုအဖြစ်သက်သက်သာထောက်ပံ့နှင့် script ကိုမှားဤမျှလောက်များစွာသောအမှုအရာကြောင့်သူတို့အားလုံးကိုရှင်းပြရန်နောက်ထပ်ဆောင်းပါးယူမယ်လို့ရှိပါတယ်ဖြစ်ပါတယ်။ အဓိကပြဿနာကအရွယ်မှာမဟုတ်ဖြစ်ပါတယ်။

သငျသညျထိုကဲ့သို့သောနေ့စဉ်နေ့တိုင်း Linux ကိုအသုံးပြုသူသို့မဟုတ် Linux ယနေ့တွင်အဖြစ်အခြား RSS feed ကိုထည့်သွင်းဖို့လိုခငျြကြံစည်ကြသနည်း အဆိုပါ script ကိုကြီးမားဖြစ်လာလိမ့်မည်ဟုနှငျ့သငျကြေညာချက်ကိုပြောင်းလဲမယ်ဆိုရင်သင်အတွင်းစိတ်စေချင်ကြောင်းဆုံးဖြတ်ခဲ့သည်လျှင်သင်မျိုးစုံသောနေရာများထဲမှာပြောင်းလဲဖို့ရှိသည်လိမ့်မယ်။

သူတို့စပါးအနည်းငယ်သာအသုံးပြုသင့်လျှင်တစ်ဦးအသိုက်များအတွက်အချိန်နှင့်နေရာအရပ်လည်းမရှိနေတုန်း။ မှာအားလုံး IF ကိုသင်အသိုက်မလိုအပ်ပါဘူးဒါကြောင့်သင့်ရဲ့ကုဒ် refactor တစ်လမ်းများသောအားဖြင့်ရှိပါတယ်။ ငါအနာဂတ်ဆောင်းပါး၌ဤဘာသာရပ်တွင်ရောက်လိမ့်မည်။

ရဲ့ယခု Duff parameters တွေကိုဝင်လူများ၏ပြဿနာကိုပြုပြင်တာတွေကိုကြည့်ကြပါစို့။ ဥပမာအားဖြင့် script ထဲမှာဆောင်းပါးစာရင်းကိုထို့နောက်အသုံးပြုသူ 2nd parameter သည်အဖြစ် "aboutdotcom" ထက်အခြားအရာတစ်ခုခုထဲသို့ဝင်လျှင်အထက်တွင်မသက်ဆိုင်အသုံးပြုသူ lxer ရိုက်ထည့်ပါသို့မဟုတ်မရှိမရှိအဖြစ် LXER ကနေ RSS feed ထဲကနေပေါ်လာပါသည်။

user က 1st parameter သည်အဖြစ် "လူအပေါင်းတို့သည်" သို့မဟုတ် "ဖော်ပြချက်" မဝင်နိုင်ပါဘူးဆိုရင်အပြင်ထို့နောက် default အနေနဲ့ပါသို့မဟုတ်အသုံးပြုသူရည်ရွယ်သောအရာကိုမကျမည်အကြောင်းအရာခေါင်းစဉ်များစာရင်းကိုဖြစ်ပါတယ်။

အောက်ပါ script ကိုအကြည့်အရှု (သို့မဟုတ်ကူးယူနှင့်သင့် rssget.sh ဖိုင်ထဲသို့ paste ။

#! / bin / ကား Bash

[$ 2 = "aboutdotcom"] လျှင် || [$ 2 = "lxer"]
ထိုအခါ
[$ 1 = "အားလုံး"] လျှင် || [$ 1 = "ဖော်ပြချက်"] || [$ 1 = "ခေါင်းစဉ်"]
ထိုအခါ
[$ 2 = "aboutdotcom"] လျှင်
ထိုအခါ

[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://z.about.com/6/o/m/linux_p2.xml;

အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
အခြားသူ
[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi

သတိပြုပါရန်ပထမဦးဆုံးအရာ script ကိုယခုမျှမျှတတကြီးတွေလာပြီဖြစ်ပါတယ်နှင့်သင်လျင်မြန်စွာထုတ်ပြန်ချက်များဖြစ်လာနိုင်လျှင်ထိန်းချုပ်မှုထဲကအသိုက်ကိုဘယ်လိုမြင်နိုင်ပါသည်သောကွောငျ့ဖွစျသညျ။

ဒီ script ကိုအတွက်အရေးကြီးသောကြောင်းအဆိုပါနည်းနည်းပု IF ကြေညာချက်ဖြစ်ပါတယ် || ကြေညာချက်ထိုအခါလိုင်း 2 နှင့်လိုင်း 4 ရက်နေ့ကပုဒ်မ။

အဆိုပါ || OR ကိုဆိုလိုတာပါ။ ဒီတော့လိုင်း [$ 2 = "aboutdotcom"] လျှင် || [$ 2 = "lxer"] အဆိုပါ 2nd parameter သည် "aboutdotcom" သို့မဟုတ် "lxer" ကိုညီမျှသည်ရှိမရှိ check လုပ်ပေးပါတယ်။ ဒါကြောင့်မပါလျှင်ပြင်ပါဆုံးလျှင်အဘို့အဘယ်သူမျှမတခြားကြေညာချက်လည်းမရှိသောကွောငျ့ထို့နောက် IF ကြေညာချက်ညျ့စုံ၏။

အလားတူပင်မျဉ်း 4 လိုင်းပေါ်တွင် [$ 1 = "အားလုံး"] လျှင် || [$ 1 = "ဖော်ပြချက်"] || [$ 1 = "ခေါင်းစဉ်"] အဆိုပါ 1st parameter သည် "အားလုံး" သို့မဟုတ် "ဖော်ပြချက်" သို့မဟုတ် "ခေါင်းစဉ်" တစ်ခုခုနှင့်ညီမျှသည်ရှိမရှိ check လုပ်ပေးပါတယ်။

အခုဆိုရင်အသုံးပြုသူသူတို့ LXER ထံမှခေါင်းစဉ်များစာရင်းကိုလက်ခံရရှိခဲ့ကြပေသည်မတိုင်မီဘာမျှသော်လည်းပြန်လာသောဖြစ်ပါတယ် sh rssget.sh အာလူးဒိန်ခဲပြေးလျှင်။

၏ဆန့်ကျင်ဘက် || && ဖြစ်ပါတယ်။ အဆိုပါ && အော်ပရေတာနှင့်ကိုဆိုလိုတာပါ။

ငါ script ကို ပို. ပင်တစ်အိပ်မက်ဆိုးတူအောင်လုပ်မယ့်ငါဒါပေမယ့်သေချာအသုံးပြုသူ 2 parameters များကိုပေးလျက်ရှိသည်ဖြစ်စေခြင်းငှါလူအပေါင်းတို့အရေးကြီးသောစစ်ဆေးမှုများကိုမှန်ကန်စေသည်။

#! / bin / ကား Bash

[$ # -eq 2] လျှင်
ထိုအခါ

[$ 2 = "aboutdotcom"] လျှင် || [$ 2 = "lxer"]
ထိုအခါ
[$ 1 = "အားလုံး"] လျှင် || [$ 1 = "ဖော်ပြချက်"] || [$ 1 = "ခေါင်းစဉ်"]
ထိုအခါ
[$ 2 = "aboutdotcom"] လျှင်
ထိုအခါ

[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://z.about.com/6/o/m/linux_p2.xml;

အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
အခြားသူ
[$ 1 = "အားလုံး"] လျှင်
ထိုအခါ
rsstail -D -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "ဖော်ပြချက်"]
ထိုအခါ
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
အခြားသူ
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi

[$ # -eq 2] လျှင်: ကြေညာချက်လျှင်အောက်ပါအတိုင်းအဖြစ်ဇာတ်ညွှန်းအတွက်အပိုကြောင်းတည်းသော bit နဲ့အခြားပြင်ဖြစ်ပါတယ်။ သငျသညျ input ကို parameters တွေကိုအကြောင်းကိုဆောင်းပါးကိုဖတ်ရှုခဲ့လျှင်သင် $ # input ကို parameters တွေကို၏နံပါတ်တစ် count ကပြန်လာသိကြပါလိမ့်မယ်။ အဆိုပါ -eq တန်းတူကိုဆိုလိုတာပါ။ အဆိုပါ IF ကြေညာချက်ထို့ကြောင့်အသုံးပြုသူ 2 parameters တွေကိုဝင်သော check လုပ်ပေးပါတယ်နှင့်သူတို့မပါလျှင်သူကပဲဘာမှလုပ်နေစရာမလိုဘဲပိတ်သွားစေသည်။ (အထူးသဖြင့်ဖော်ရွေမ) ။

ငါသည်ဤသင်ခန်းစာအတော်လေးကြီးမားလာပြီကြောင်းသတိထားမိပါတယ်။ အဲဒီမှာယခုအပတ်ကိုဖုံးလွှမ်းရန်ပိုပြီးမဖြစ်ပေမယ့်ကျနော်တို့ပြီးအောင်ရှေ့တော်၌ထို script ကိုတက်သပ်သပ်ရပ်ရပ်ကူညီချင်တယ်။

သငျသညျခြွင်းချက်ထုတ်ပြန်ချက်များနှင့် ပတ်သက်. လေ့လာသင်ယူဖို့လိုအပ်သောတဦးတည်းနောက်ဆုံး command ကတော့ပြဿနာကြေညာချက်ဖြစ်ပါတယ်။

#! / bin / ကား Bash


[$ # -eq 2] လျှင်
ထိုအခါ
အမှု $ 2 မှာ
aboutdotcom)
အမှု $ 1
အားလုံး)
rsstail -D -l -u z.about.com/6/o/m/linux_p2.xml
;;
ဖော်ပြချက်)
rsstail -D -u z.about.com/6/o/m/linux_p2.xml
;;
ခေါင်းစဥ်)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;
esac
;;
lxer)
အမှု $ 1
အားလုံး)
rsstail -D -l -u http://lxer.com/module/newswire/headlines.rss
;;
ဖော်ပြချက်)
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
;;
ခေါင်းစဥ်)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
esac
;;
esac
fi

အဆိုပါကိစ္စတွင်ကြေညာချက်လျှင်မည်သူမဆိုလျှင်မည်သူမဆိုလျှင်မည်သူမဆို IF ရေးသားခြင်း၏ပိုကောင်းသလိုနည်းလမ်းဖြစ်ပါတယ်။

ဥပမာအားအဘို့ဤယုတ္တိဗေဒ

အသီး = ငှက်ပျောသီး IF
သို့ဖြစ်လျှင်ဤ
မည်သူမဆိုလျှင်အသီး = လိမ္မော်သီး
သို့ဖြစ်လျှင်ဤ
မည်သူမဆိုလျှင်အသီး = စပျစ်သီး
သို့ဖြစ်လျှင်ဤ
END သည် IF

အဖြစ်ပြန်လည်ပြင်ဆင်ရေးနိုင်ပါတယ်:

အမှုအသီးထဲမှာ
ငှက်ပျောသီး)
ဤသို့ပြု
;;
လိမ္မော်သီး)
ဤသို့ပြု
;;
စပျစ်သီး)
ဤသို့ပြု
;;
esac

အခြေခံအားဖြင့်အမှုပြီးနောက်ပထမဦးဆုံးကို item သငျသညျ (ဆိုလိုသည်မှာအသီး) ကိုနှိုင်းယှဉ်မယ့်အရာဖြစ်ပါတယ်။ ထိုအခါကွင်းခတ်မတိုင်မီတစ်ဦးချင်းစီကို item သင်တို့တဘက်၌ကြောင့်ရှေ့အလိုင်းများကိုက်ညီလျှင်နှိုင်းယှဉ်နေသောအရာပင်ဖြစ်သည် ;; သို့ပွေးလေ၏လိမ့်မည်။ တစ်ဦးကအမှုထုတ်ပြန်ချက် (နောက်ပြန်ကိစ္စတွင်ဖြစ်သော) ကိုပြောင်းပြန် esac နှင့်အတူရပ်စဲသည်။

အဆိုပါ rssget.sh ဇာတ်ညွှန်းအတွက်အမှုထုတ်ပြန်ချက်ကယ့်ကိုအလုံအလောက်ပြုလုပ်တိုးတက်အောင်မဟုတ်ပေမယ့်ကြောက်ရွံ့ nesting များနမူနာအချို့ကိုဖယ်ရှားပေးပါသည်။

တကယ်ငါ variable တွေကိုရန်သင့်အားမိတ်ဆက်ပေးဖို့လိုတယ်ဇာတ်ညွှန်းတိုးတက်စေရန်။

အောက်ပါကုဒ်မှာကြည့်ပါ:

#! / bin / ကား Bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
Display ကို = ""
url = ""

[$ # -lt 2] လျှင် || [$ # -gt 2]
ထိုအခါ
"အသုံးပြုမှု: [aboutdotcom | lxer] rssget.sh [| | ဖော်ပြချက်ခေါင်းစဉ်အားလုံး]" ပဲ့တင်သံ;
ထွက်ပေါက်;
fi

အမှု $ 1
အားလုံး)
Display ကို = "- ဃ -l -u"
;;
ဖော်ပြချက်)
Display ကို = "- ဃ -u"
;;
ခေါင်းစဥ်)
Display ကို = "- u"
;;
esac

အမှု $ 2 မှာ
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
esac
rsstail $ display ကို $ url;

တစ်ဦးက variable ကိုနာမည်တစ်ခုပေးခြင်း, ပြီးတော့အဲဒါကိုတန်ဖိုးတာဝန်ပေးဖို့သတ်မှတ်ပါတယ်။ အထက်ပါဥပမာမှာအောက်ပါ variable တွေကိုတာဝန်ကျနေသောခေါင်းစဉ်:

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
Display ကို = ""
url = ""

အဆိုပါ script ကို variable တွေကိုအသုံးပြုခြင်းအားဖြင့်ချက်ချင်းပိုပြီးစီမံခန့်ခွဲသည်။ ဥပမာအားဖြင့်အသီးအသီး parameter သည်သီးခြားစီကိုင်တွယ်ဒါမျှမ IF အသိုက်ထုတ်ပြန်ချက်များရှိပါတယ်ဖြစ်ပါတယ်။

အဆိုပါ display ကို variable ကိုယခုသင်တို့ရှိသမျှကို ရွေးချယ်. ရှိမရှိပေါ် မူတည်. သတ်မှတ်, ဖော်ပြချက်သို့မဟုတ်ခေါင်းစဉ်နှင့် url variable ကိုပု aboutdotcom variable ကိုသို့မဟုတ်သင် aboutdotcom သို့မဟုတ် lxer ကို ရွေးချယ်. ရှိမရှိပေါ်မူတည်ပြီးယင်း lxer variable ကို၏တန်ဖိုး၏တန်ဖိုးသတ်မှတ်ထားခြင်းဖြစ်သည်။

အဆိုပါ rsstail command ကိုယခုပဲမှန်မှန်ကန်ကန် run ဖို့ display နှင့် url ၏တန်ဖိုးသုံးစွဲဖို့ရှိပါတယ်။

variable တွေကိုဖွင့်အမှန်တကယ်သင်သည်ထိုသူတို့ရှေ့တွင်တစ်ဦး $ နိမိတ်လက္ခဏာကိုနေရာချရန်ရှိသည်ကသူတို့ကိုသုံးစွဲဖို့, သူတို့နာမည်တစ်ခုပေးခြင်းဖြင့်သတ်မှတ်ထားကြသည်နေတုန်း။ $ variable ကိုနည်းလမ်းငါ့ကို variable ကိုရဲ့ contents ပေးသော်လည်းတစ်နည်း variable ကို = value ကိုတန်ဖိုးမှ variable ကိုသတ်မှတ်။

အောက်ပါဒီသင်ခန်းစာများအတွက်နောက်ဆုံး script ဖြစ်ပါတယ်။

#! / bin / ကား Bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
everydaylinuxuser = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
အသုံးပြုမှု = "အသုံးပြုမှု: rssget.sh [အားလုံး | ဖော်ပြချက် | ခေါင်းစဉ်] [lxer | aboutdotcom | everydaylinuxuser | linuxtoday]"
Display ကို = ""
url = ""

[$ # -lt 2] လျှင် || [$ # -gt 2]
ထိုအခါ
$ အသုံးပြုမှု echo;
ထွက်ပေါက်;
fi

အမှု $ 1
အားလုံး)
Display ကို = "- ဃ -l -u"
;;
ဖော်ပြချက်)
Display ကို = "- ဃ -u"
;;
ခေါင်းစဥ်)
Display ကို = "- u"
;;
*)
$ အသုံးပြုမှု echo;
ထွက်ပေါက်;
;;
esac

အမှု $ 2 မှာ
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
linuxtoday)
url = $ linuxtoday;
;;
everydaylinuxuser)
url = $ everydaylinuxuser;
;;
*)
$ အသုံးပြုမှု echo;
ထွက်ပေါက်;
esac

rsstail $ display ကို $ url;

အထက်ပါ script ကိုပိုပြီး RSS feeds မိတ်ဆက်သူတို့ 2 variable တွေကိုမဝင်နိုင်ဘူးဒါမှမဟုတ်သူတို့က variable တွေကိုအဘို့အမမှန်ကန်ကြောင်း options များရိုက်ထည့်လျှင် script ကိုမည်သို့အသုံးပြုရမည်ကိုအသုံးပြုသူကိုပြောပြသည့်အသုံးပြုမှု variable ကိုလည်းမရှိ။

အကျဉ်းချုပ်

ဤမော်ကွန်းဆောင်းပါးခဲ့များနှင့်ဝေးလွန်းလွန်းမကြာမီသွားပြီကြပေမည်။ လာမယ့်ဧည့်လမ်းညွှန်အတွက်ငါသည်သင်ထုတ်ပြန်ချက်များ IF ဘို့ရှိသမျှကိုနှိုင်းယှဉ်ရွေးချယ်စရာပြပါလိမ့်မယ်နှင့် variable တွေကိုပတ်သတ်ပြီးနှင့်အတူအကြောင်းပြောဆိုရန်ပိုပြီးနေဆဲရှိသေး၏။

အထက်ပါ script ကိုတိုးတက်စေရန်လုပ်ဆောင်နိုင်တယ်နှင့်ကျွန်တော်ကွင်း, စူးစမ်းအတိုင်းဤအနာဂတ်လမ်းပြတွေဖုံးလွှမ်းမည်ကိုပိုပြီးလည်းရှိပါသည် grep နှင့် regular expressions ကို။

ကနေပိုမိုအသုံးဝင်လမ်းညွှန်များကိုရှာဖွေဌ inux.about.com များ၏ဘယ်လို (ဆောင်းပါးစာရင်းကိုကြည့်ရှုရန်အမျိုးအစားအတိတ်အောက်ကိုဆင်း) ရန်အပိုင်းထွက် Check ကို dual Boot တက် Windows နဲ့ Ubuntu ကို မှ GNOME boxes တွေကိုသုံးပြီး Virtual Machine ကိုတက် setting