Bash မှာ Scripts ကိုသုံးပြီးဘယ်လို Run ကို Subshells လျော်ဖို့သင်ယူပါ

အဆိုပါနောက်ခံအတွင်းစင်ပြိုင်အတွက် Run ဖို့ Subshells ညှလုပ်နည်း

တစ်ဦးကအခွံတစ်ခုက Linux system ပေါ်တွင် command များရိုက်ထည့်ခြင်းများအတွက်အခြေခံ interface ကိုဖြစ်ပါတယ်။ ဒါဟာဖြင့်သင်သည်တိုက်ရိုက် command ကိုရိုက်ထည့်ပါသို့မဟုတ်ကွပ်မျက်ခံရခံရဖို့ပညတ်တို့ကိုတစ် sequence ကိုပါဝင်သောတစ်ဖိုင် (script ကို) ကိုသတ်မှတ်နိုင်ပါတယ်။ ခွံတစ်ခုအဆင့်ဆင့်အတွက်စည်းရုံးနေကြတယ်, နှင့်မည်သည့်အခွံအသစ်တခု shell ကိုဖန်တီးနိုင်ပါတယ်။ အသစ် shell ကိုကလေးတစ်ဦးဖြစ်စဉ်ကို-တစ် subshell-၏မိဘ shell ကိုကဖန်တီးစဉ်းစားသည်။

ပုံမှန်အားဖြင့်တစ်ဦး subshell မိဘလုပ်ငန်းစဉ်ကိုအဆုံးသတ်လျှင်, subshell လည်းအဆုံးသတ်သောသဘောသည်၎င်း၏မိဘအပေါ်မှီခိုသည်။ မဆို output ကိုပု subshell ကနေမိဘ shell ကိုကူးမြောက်သည်။

တစ်ဦး Subshell ဖန်တီးနည်း

တစ်ဦး Bash မှာ shell ကိုဇာတ်ညွှန်းအတွက်, သင်ကွင်းသင်္ကေတသုံးပြီး subshell ဖန်တီး:

"subshell မစတင်မီ" #! / bin / ကား Bash ပဲ့တင်သံ "Finished" ပဲ့တင်သံ ([$ 99 -le ရေတွက်] နေချိန်မှာ = 1 ရေတွက် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ echo ကြဘူး)

ဥပမာမှာ, အ စဉ်ကွင်းဆက် က script ကိုပြုလုပ်ပြီးဖိုင်ကိုစီမံထားတဲ့အတွက် shell ကိုတစ် subshell အတွက်ကွပ်မျက်ခံရခံရဖို့ကိုဖြစ်ပေါ်စေသည်သောကွင်းများတွင်ပူးတွဲဖြစ်ပါတယ်။

အဆိုပါနောက်ခံအတွက် Subshell running

သင် subshell နောက်ခံကွပ်မျက်ခံရခံရဖို့ဖြစ်တယ်, မိဘ shell ကိုဇာတ်ညွှန်းအရာကြွင်းလေနှင့်အတူဆက်လက်မလုပ်ဆောင်မီအပြီးသတ်ဖို့ subshell စောင့်သည်ဟုသတ်မှတ်မထားရင်။ သငျသညျအပြိုင်အတွက် subshells ကို run ချင်လျှင်ဤနေရာတွင်ပြထားတဲ့အတိုင်းသို့သော်, သငျသညျ, အ subshell စကားရပ်တွင်အောက်ပါပု ampersand ဇာတ်ကောင်တွေနဲ့ပြည့်စုံသောနောက်ခံအတွက်သူတို့ကို run:

"subshell မစတင်မီ" #! / bin / ကား Bash ပဲ့တင်သံ "Finished" & echo ([$ 99 -le ရေတွက်] နေချိန်မှာ = 1 ရေတွက် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ echo ကြဘူး)

စင်ပြိုင်အတွက်အကွိမျမြားစှာ Subshells running

သငျသညျနောက်ခံအဖြစ်မျိုးစုံ subshells ဖန်တီး အကယ်. လုပ်ငန်းစဉ်များ , သင်အပြိုင်အတွက်တာဝန်များကို run နိုင်ပါတယ်။ ပုံမှန်အားဖြင့်, ထို operating system ကိုဖြစ်စဉ်များရှိပါသည်အဖြစ်ပရိုဆက်ဆာသို့မဟုတ် cores ကအနည်းဆုံးအဖြစ်အများအပြားရှိပါတယ်ယူဆ, ကွဲပြားခြားနားသောပရိုဆက်ဆာသို့မဟုတ် cores တစ်ဦးချင်းစီလုပ်ငန်းစဉ်များနှင့် subprocess အသုံးပြုသည်။ ဒီလိုမှမဟုတ်ရင်တာဝန်များကိုတူညီတဲ့ပရိုဆက်ဆာသို့မဟုတ်-cores တာဝန်ပေးအပ်ထားပါသည်။ အဆိုပါလုပ်ငန်းများကိုပြီးစီးသည်အထိကြောင်းကိစ္စတွင်ခုနှစ်, Processor ကိုသို့မဟုတ် core ကိုစဉ်ဆက်မပြတ်တာဝန်ပေးအပ်တာဝန်များကိုအကြား switches ။ နောက်တစ်နေ့ဥပမာနှစ်ခု subprocesses ရှိပါတယ်။ ပထမဦးဆုံးတဦးတည်း 1 မှ 99 ရေတွက်နှင့် 1000 ကနေ 1099 မှဒုတိယတစျခု။

"subshell မစတင်မီ" #! / bin / ကား Bash ပဲ့တင်သံ [$ count က -le နေစဉ် & (= 1000 ရေတွက် ([$ 99 -le ရေတွက်] နေချိန်မှာ = 1 ရေတွက် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ echo ကြဘူး) 1099] "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ) & echo "Finished" echo ပါဘူး

အဆိုပါသုံးပါ ချောင်းမြောင်း ဇာတ်ညွှန်း၏ကျန်နှင့်အတူဆက်လက်မလုပ်ဆောင်ခင်ပြီးအောင်ဖို့ subprocesses စောင့်မိဘဖြစ်စဉ်ကိုပြောပြရန်ကြေညာချက်:

"subshell မစတင်မီ" #! / bin / ကား Bash ပဲ့တင်သံ [$ count က -le နေစဉ် & (= 1000 ရေတွက် ([$ 99 -le ရေတွက်] နေချိန်မှာ = 1 ရေတွက် "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ echo ကြဘူး) 1099] "$ count က" အိပ်စက်ခြင်း 1 (() ++ ရေတွက်) ပြုမိ) & ပဲ့တင်သံစောင့်ဆိုင်း "Finished" echo ပါဘူး

Subshells များအတွက်အသုံးပြုသည်

ပညတ်တော်တို့ကိုတစ်ဦးအထူးသဖြင့်ပတ်ဝန်းကျင်သို့မဟုတ် directory ထဲတွင်ကွပ်မျက်ခံရဖို့လိုတဲ့အခါမှာ Subshells အသုံးဝင်ပါသည်။ တစ်ခုချင်းစီကို command ကိုတစ်ဦးကွဲပြားခြားနား subshell အတွက်ကွပ်မျက်ခံရလျှင် variable ကို setting များကိုဖွင့်ရောနှောပါလိမ့်မည်မစွန့်စားမှုလည်းမရှိ။ မိဘလုပ်ငန်းစဉ်၏ပတ်ဝန်းကျင်က၎င်း၏ subprocesses မဆိုကြောင့်ထိခိုက်မပြုလုပ်ပြီးစီးတွင်, ဆက်တင်နှင့်လက်ရှိ directory ကို, ပွနျလညျထူထောငျခံရဖို့မလိုအပ်ပါဘူး။

Subshells များတွင်အသုံးပြုနိုင်ပါတယ် function ကိုအဓိပ္ပာယ် သူတို့ကွဲပြားခြားနားသော parameters တွေကိုနှင့်အတူအကြိမ်ပေါင်းများစွာကွပ်မျက်ခံရနိုင်နိုင်အောင်။