ဉျ-Loop Bash မှာရေးထားလုပ်နည်း

commands, Syntax နှင့်ဥပမာများ

သင်တစ်ဦး script ကိုဖိုင်သို့သူတို့ကိုငါရေးသားခြင်း, ပြီးတော့သူကအပြေးနေဖြင့် command များကိုတစ်ဦး sequence ကို execute နိုင်ပါတယ်။

ဒီ script file ကိုရိုးရှင်းစွာလည်း command line ကို (ထံမှကွပ်မျက်ခံရနိုင်ညွှန်ကြားချက်တစ်ခု sequence ကိုပါဝင်သောပုံမှန်အားဖြင့် .SH ဖိုင် extension တွေနဲ့စာသားဖိုင်ဖြစ်ပါသည် shell ကို ) ။

Loop ဥပမာနေစဉ်

အောက်တွင်တစ်ဦးအနေဖြင့်ကွင်းဆက်၏ဥပမာတစ်ခုဖြစ်ပါတယ်။ ကွပ်မျက်ခံရသည့်အခါ, ဒီ script ကိုဖိုင် screen ပေါ်မှာ 9 မှတဆင့်နံပါတ်များ 1 print ထုတ်ပါလိမ့်မယ်။ အဆိုပါစဉ်-ကြေညာချက်ကိုသင်ထက်ရပ်စဲခွအေနအေသတ်မှတ်ခြင်းပိုမိုပြောင်းလွယ်ပြင်လွယ်ပေးသည် များအတွက်-ကွင်းဆက်

#! / bin / ကား Bash count က = 1 [$ -le 9 ရေတွက်] "$ count က" အိပ်စက်ခြင်း 1 echo ပြုကြစဉ် (() ++ ရေတွက်) ပြီးပြီ

ဥပမာအားဖြင့်, သင် increment ကြေညာချက် "((ရေတွက် ++))" ချန်လှပ်ခြင်းဖြင့်ယခင်ဇာတ်ညွှန်းတစ်ခုအဆုံးမဲ့ loop ကိုဖြစ်စေနိုင်ပါတယ်:

#! / bin / ကား Bash count က = 1 [$ -le 9 ရေတွက်] အနေဖြင့် "$ count က" အိပ်စက်ခြင်း 1 ပြီးပြီ echo ပါဘူး

အဆိုပါ "အိပ်စက်ခြင်း 1" ကြေညာချက်အသီးအသီးကြားမှာအပေါ် 1 စက္ကန့်များအတွက်ကွပ်မျက် pauses ။ ယင်းကို Ctrl + C ကိုသုံးပါ ကီးဘုတ် လုပ်ငန်းစဉ်ရပ်ဆိုင်းဖို့ဖြတ်လမ်း။

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

# / bin / ကား Bash count က = 1 နေချိန်မှာ: echo ကြဘူး "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြီးပြီ

ယင်းအနေဖြင့်-ကွင်းဆက်အတွက်မျိုးစုံသောအခြေအနေများသုံးစွဲဖို့အလို့ငှာ, သင်နှစ်ဆစတုရန်း bracket ကသင်္ကေတကိုအသုံးပြုရန်ရှိသည်:

စဉ် = 1 = 0 ပြုသောအမှုရေတွက် [[$ -le 9 ရေတွက်] && [$ == 0] ပြုသောအမှု] [$ == 5 ရေတွက်] လျှင် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) echo ဘူး; ထို့နောက် $ ပြုသောအမှု = 1 fi ပြီးပြီ

ဒီ script ကိုမှာ variable ကို 0 င်ဖို့န, ပြီးတော့အဲဒီကွင်းဆက်အခြေအနေနေချိန်မှာကွင်းဆက်နေသမျှကာလပတ်လုံး "count က" ကိုးထက်လျော့နည်းခြင်းနှင့်ညီမျှသည် "ပြုမိ" ဖြစ်ပါတယ်အဖြစ်ဆက်လက်လိမ့်မည်ဟုဤသို့ဖော်ပြသည် 5. ရေတွက်ရောက်ရှိသည့်အခါ 1 ဟုသတ်မှတ်ထား "ပြုမိ" သုညဖြစ်သည်။ ယင်းအရေအတွက် 5 ညီမျှသည့်အခါထိုကြောင့်ကွင်းထဲမှထွက်သွားရန်။

အဆိုပါ "&&" ယုတ္တိ "နှင့်" နှင့် "||" ကိုဆိုလိုသည် ယုတ္တိကိုဆိုလိုသည် "သို့မဟုတ်" ။

တစ်ခုကအခြားရွေးချယ်စရာအဆိုပါတွဲဖက်များအတွက်သင်္ကေတ "နှင့်" နှင့် "သို့မဟုတ်" အခြေအနေများအတွက်တစ်ခုတည်းစတုရန်းကွင်းခတ်နှင့်အတူ "-a" နှင့် "-O" ဖြစ်ပါတယ်။ အထက်ပါအခွအေနေ:

[[$ -le 9 ရေတွက်] && [$] == 0 င်ပြုမိ]

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

-a [$ == 0 င်ပြုမိ] [$ -le 9 ရေတွက်]

စာသားဖိုင် Reading ပုံမှန်အားဖြင့်ခဏတစ်ကွင်းဆက်ပြုနေသည်။ အောက်ပါဥပမာထဲမှာ, ကား Bash Script ကိုကိုခေါ်တဲ့ဖိုင်လိုင်းအားဖြင့် contents တွေကိုလိုင်းဖတ် "inventory.txt:"

FILE ကို = inventory.txt အမှုဆောင်အရာရှိ 6

ပထမဦးဆုံးလိုင်းမှာ "FILE ကို" variable ကိုရန် input ကိုဖိုင် name ကိုသတ်မှတ်ပေးထားတဲ့။ ဒုတိယလိုင်း (က 3 နှင့် 9 အကြားမည်သည့်တန်ဖိုးကိုဖြစ်နိုင်ပါတယ်) ဖိုင်ကို descriptor ကို "6" ရှိ "စံ input ကို" ကယ်တင်တော်မူ၏။ ဤ "စံ input ကို" (ကိုအသုံးပြုသည်အရာ 0 င် "," ဟာ input ကိုဖိုင် descriptor ကို file ဖို့တာဝန်သည် 3rd လိုင်းများတွင်အမှုဆောင်အရာရှိ 0 င် "ဟုအဆိုပါကြေညာချက်တွင်တွေ့မြင်ဇာတ်ညွှန်းရဲ့အဆုံးမှာ descriptor ကို" 0 "file ပြန်ရနိုင်နိုင်အောင်ပြု စံ input ကိုများအတွက်။ အဆိုပါကြေငြာချက် "ကိုဖတ်ပြီး" ထို့နောက်တစ်ဦးချင်းစီကြားမှာပေါ်မှ file ကိုကနေလိုင်းဖတ်နှင့် "line1" variable ကိုကသတ်မှတ်ပေးထားတဲ့။

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

[$ == 5 ရေတွက်] လျှင် [$ -le 9 ရေတွက်] ကိုချိုးဖျက် fi ပြီးဆုံး echo အမှုကိုပြုပြီးနောက် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) echo ပါဘူးစဉ် = 1 = 0 ပြုသောအမှုရေတွက်

အဆိုပါချိုးကြေညာချက်ကွင်းဆက်အနေဖြင့်အဆုံးပရိုဂရမ်တစ်ခုကွပ်မျက် skips ကြောင့်အောက်ပါတစ်ခုခုထုတ်ပြန်ချက်များ ပေး. စီရင်။ ဤကိစ္စတွင်ခုနှစ်, ကြေညာချက် "ပြီးဆုံး echo ။ "

အဆိုပါကြေညာချက်တွင်ဆက်လက်အခြားတစ်ဖက်တွင်လက်ရှိကြားမှာ၏နေချိန်မှာကွင်းဆက်ကြေညာချက်ကသာအရာကြွင်းလေ skips နှင့်လာမည့်ကြားမှာတိုက်ရိုက်ခုန်:

[$ == 5 ရေတွက်] လျှင်ပြီးဆုံး echo ပြုသောအမှု fi ပဲ့တင်သံ "$ count က" ကိုဆက်လက်ပြီးတော့အိပ်ပျော်ခြင်း 1 (() ++ ရေတွက်) [$ -le 9 ရေတွက်] နေချိန်မှာ = 1 = 0 ပြုမိကြဘူးရေတွက်

ဤကိစ္စတွင်ခုနှစ်, သည် "ဆက်လက်" ကြေညာချက် variable ကိုဤနောက်ဆက်တွဲထုတ်ပြန်ချက် (ပဲ့တင်သံ "$ count က") ကိုဆိုလိုသည် 5. ရောက်ရှိ "ရေတွက်" သောအခါကွပ်မျက်ခံရခြင်းဖြစ်သည် ( "count က" ၏တန်ဖိုး 5 အခါ) ဒီကြားမှာအပေါ်ကွပ်မျက်ခံရမပေးပါ။