တစ်ဦး Bash မှာ-Script မှ Arguments ဖြတ်သွားဖို့ကိုဘယ်လို

commands, syntax နှင့်ဥပမာ

သင်တစ်ဦးကိုရေးနိုင်ပါတယ် ကား Bash Script ကို ကဇာတ်ညွှန်းက command line ကနေခေါ်တော်မူသောအခါသတ်မှတ်ထားသောအငြင်းပွားမှုများအားလက်ခံတွေ့ဆုံကြောင်းထိုကဲ့သို့သော။ ဇာတ်ညွှန်း input ကို parameters တွေကိုပါ (ဆင်ခြေ) ၏တန်ဖိုးများကိုပေါ် မူတည်. အနည်းငယ်ကွဲပြားခြားနားသော function ကိုဖျော်ဖြေဖို့ရှိပါတယ်သည့်အခါဤနည်းလမ်းကိုအသုံးပြုသည်။

ဥပမာအားဖြင့်, သင်သည်ထိုသို့သောင်း၏စကားများရေတွက်သည်အတိုင်း, ဖိုင်တစ်ခုအပေါ်တစ်ဦးအထူးသဖြင့်စစ်ဆင်ရေးကိုလုပ်ဆောင်သော "stats.sh" ဟုခေါ်နေတဲ့ဇာတ်ညွှန်းနိုင်ပါသည်။ သင်သည်များစွာသောဖိုင်တွေပေါ်ကြောင်း script ကိုသုံးစွဲဖို့နိုင်တော့မည်ချင်လျှင်, သင်တို့ကိုလုပ်ငန်းများ၌ခံရဖို့ဖိုင်တွေအားလုံးကိုများအတွက်တူညီ script ကိုအသုံးပွုနိုငျသောကြောင့်, အငြင်းအခုံအဖြစ်ဖိုင်အမည်ကိုသွားအကောင်းဆုံးဖြစ်ပါတယ်။ လုပ်ငန်းများ၌ခံရဖို့ဖိုင်ကို၏အမည်ကို "songlist" ဖြစ်ပါတယ်လျှင်, ဥပမာ, သငျသညျကိုအောက်ပါ command line ကိုရိုက်ထည့်ပါမယ်လို့:

sh stats.sh songlist

အငြင်းပွားမှုများဒါရက်နေ့တွင်ဒုတိယအငြင်းအခုံရန်, $ 1 ကိုပထမဦးဆုံးအငြင်းအခုံကိုရည်ညွှန်းသည်အဘယ်မှာရှိသနည်း variable တွေကိုစသည်တို့ကို $ 1, $ 2, $ 3, သုံးပြီး script ကို, အတွင်းပိုင်း $ 2 ဝင်ရောက်နှင့်နေကြသည်။ ဤသည်ကိုအောက်ပါဥပမာထဲမှာသရုပ်ဖော်နေသည်:

FILE1 = $ 1 wc $ FILE1

ဖတ်နိုင်တဲ့အဘို့, ပထမဦးဆုံးငြင်းခုံ ($ 1) ၏တန်ဖိုးတစ်ခုဖော်ပြရန်အမည်ဖြင့်တစ်ဦး variable ကို assign, အဲဒီနောက်စကားလုံးအရေအတွက် utility ကို (ပဌနာ wc ဒီ variable ကို ($ FILE1) ရက်နေ့တွင်) ။

သငျသညျအငွငျးပှားနေတဲ့ variable ကိုအရေအတွက်အားရှိပါကသင်သည်အပေါငျးတို့သ input ကို parameters တွေကိုတစ်ခုခင်းကျင်းသော "$ @" variable ကိုအသုံးပြုနိုင်ပါတယ်။ ဤသည်သင်တစ်ဦးကိုသုံးနိုင်သည်ကိုဆိုလိုသည် များအတွက်-ကွင်းဆက် အောက်ပါဥပမာမှာရုပ်ပြအဖြစ်ကြားမှာအသီးအသီးကို process မှ:

FILE1 အတွက် "$ @" အတွက်ပြီးပြီ wc $ FILE1 ပြုပါ

ဤတွင် command line ကနေအငြင်းပွားမှုများနှင့်အတူဤ script ကိုခေါ်ခြင်းဘယ်လိုဥပမာတစ်ခုဖြစ်ပါသည်:

sh stats.sh songlist1 songlist2 songlist3

အငြင်းအခုံနေရာများရှိပါတယ်လျှင်သင်တစ်ခုတည်းကိုးကားအတူကခိုင်ခံ့ဖို့လိုအပ်ပါတယ်။ ဥပမာ:

sh stats.sh '' songlist 1 '' songlist 2 '' songlist 3 ''

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

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

makereport -u jsmith -p မှတ်စုစာအုပ် 10-20-2011 -f pdf -D

Bash မှာက "getopts" function ကိုနှင့်အတူဤလုပ်ဆောင်ချက်ကိုနိုင်ပါတယ်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းအထက်ဥပမာအားဖြင့်, သင်သည် getopts သုံးလို့ရတယ်:

ဒါကဖြစ်ပါတယ် နေချိန်မှာ-ကွင်းဆက် "ဦး: d: p: f:" ဤကိစ္စတွင်၌, "getopts" function ကိုနှင့်ဒါခေါ် "optstring" ကိုအသုံးပြုသည်အငြင်းပွားမှုများမှတဆင့် iterate ရန်။ အဆိုပါစဉ်-ကွင်းဆက်အငြင်းပွားမှုများသွားအသုံးပွုနိုငျသောအလံပါရှိသည်သော optstring, မှတဆင့်သွားလာလျက်, variable ကို "option ကို" ကိုအလံဘို့ပေးအငြင်းအခုံတန်ဖိုးကိုသတ်မှတ်ပေးထားတဲ့။ အဆိုပါကိစ္စတွင်-ကြေညာချက်ထို့နောက်အပေါငျးတို့သအငြင်းပွားမှုများကိုဖတ်ရှုခဲ့ကြပြီးနောက်အသုံးပြုနိုင်မယ့်ကမ္ဘာလုံးဆိုင်ရာ variable ကိုရန် variable ကို "option ကို" ၏တန်ဖိုးကိုသတ်မှတ်ပေးထားတဲ့။

အဆိုပါ optstring အတွက်ကော်လံများတန်ဖိုးများကိုသက်ဆိုင်ရာအလံဘို့လိုအပ်သည်ဆိုလို။ အထက်ပါဥပမာမှာအားလုံးအလံတစ်ဦးအူမကြီးတို့ကနောက်တော်သို့လိုက်ကြသည်: "ဦး: d: p: f:" ။ ဒါကအားလုံးအလံတန်ဖိုးလိုအပ်ပါတယ်ဆိုလိုသည်။ ဥပမာအားဖြင့် "ဃ" နှင့် "f", အလံတန်ဖိုးရှိသည်ဖို့မျှော်လင့်ထားကြသည်မဟုတ်, လျှင်, optstring "ဦး: DP: f", ပါလိမ့်မယ်။

ဥပမာအားများအတွက် optstring ရဲ့အစမှာတစ်ဦးအူမကြီး, ": u: d: p: f:" တစ်ဦးလုံးဝကွဲပြားခြားနားသောအဓိပ္ပာယ်ကိုရှိပါတယ်။ ဒါဟာသင် optstring အတွက်ကိုယ်စားပြုကြသည်မဟုတ်ကြောင်းအလံကိုင်တွယ်ရန်ခွင့်ပြုပါတယ်။ ထိုကိစ္စတွင်ခုနှစ်တွင် "option ကို" ၏တန်ဖိုးကို variable ကိုသတ်မှတ်ထား "?" နှင့် "OPTARG" ၏တန်ဖိုးသည်မမျှော်လင့်ဘဲအလံဟုသတ်မှတ်ထားသည်။ အဆိုပါသင်အမှား၏ user ကိုအသိပေးသင့်လျော် error message ကိုပြသခွင့်ပြုပါတယ်။

တစ်အလံအားဖြင့်ရှေ့ပြေးကြသည်မဟုတ်ကြောင်းငြင်းခုံ getopts လျစ်လျူရှုနေကြပါတယ်။ ဇာတ်ညွှန်းကိုခေါ်တာဖြစ်ပါတယ်အခါ optstring အတွက်သတ်မှတ်ထားသောအလံပေးအပ်ကြသည်မဟုတ်ခဲ့လျှင်သင်အထူးသင့်ရဲ့ကုဒ်၌ဤအမှုကိုကိုင်တွယ်မဟုတ်လျှင်, ဘယ်အရာကိုမျှမတွေ့ကြုံတတ်၏။ getops နေဖြင့်ကိုင်တွယ်မငြင်းခုံနေဆဲစတာတွေပုံမှန် $ 1, $ 2, variable တွေကိုနှင့်အတူဖမ်းမိနိုင်ပါတယ်။