အဆိုပါ Linux / Unix စစ်ဌာနချုပ်မျှော်လင့်

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

Expectk မျှော်လင့်ခြင်းနှင့် Tk အရောအနှောဖြစ်ပါတယ်။ ဒါဟာမျှော်လင့်ခြင်းနှင့် Tk ရဲ့ဆန္ဒလိုပဲပြုမူ။ မျှော်လင့်ထားကို C ဒါမှမဟုတ် C ++ TCL မပါဘဲတိုက်ရိုက်ကိုလည်းသုံးနိုင်ပါတယ်။

နာမတျောအပို့ / UUCP, kermit နှင့်အခြား Modem ကိုထိန်းချုပ်မှုအစီအစဉ်များအားဖြင့်ခေတ်စားလာပာမျှော်လင့်ထား၏စိတ်ကူးမှလာ "မျှော်လင့်" ။ ဒါကြောင့်စိတ်တွင်မဆိုအစီအစဉ်နှင့်လုပ်ငန်းတာဝန်နှင့်အတူအသုံးပြုသူတစ်ဦး-Level command ကိုအဖြစ် run နိုင်ပါတယ်ဒါသို့သော် UUCP နဲ့မတူပဲ, မျှော်လင့်ယေဘူယျဖြစ်ပါတယ်။ တစ်ချိန်တည်းမှာအများအပြားအစီအစဉ်များကိုစကားပြောနိုင်ပါတယ်မျှော်လင့်ထား။

ဘာလုပ်နိုင်မျှော်လင့်ထား

ဥပမာအားဖြင့်, ဒီမှာ command ကိုလုပျနိုငျကိုမျှော်လင့်အချို့အရာဖြစ်ကြ၏:

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

ယေဘုယျအားဖြင့်ပရိုဂရမ်နဲ့သုံးစွဲသူတို့အကြားအပြန်အလှန်လိုအပ်သည်ဆို program ကို run နေဘို့အသုံးဝင်သည်မျှော်လင့်။ လိုအပ်သမျှသောအပြန်အလှန်အစီအစဉ်တသွင်ပြင်လက္ခဏာကိုခံရနိုငျသောကွောငျ့ဖွစျသညျ။ လည်းထိန်းချုပ်ခံအစီအစဉ်ကိုရပ်တန်မရှိဘဲအသုံးပြုသူမှထိန်းချုပ်ကျောပေးနိုင်ပါသည်မျှော်လင့်ထား။ အလားတူပင်အသုံးပြုသူအချိန်မရွေး script ကိုမှထိန်းချုပ်မှုပြန်လာနိုင်ပါတယ်။

usage

execute ဖို့ command များကိုစာရင်းတစ်ခုအဘို့အ cmdfile ဖတ်မျှော်လင့်ထား။ မျှော်လင့်ထားသည့် # ကိုထောက်ပံ့သောစနစ်များအပေါ်လုံးလုံးလြားလြားမဖြစ်၏စေခြင်းငှါ, ဟာ executable အဖြစ် script ကို marking နှင့်ဇာတ်ညွှန်းအတွက်ပထမဦးဆုံးလိုင်းအောင်နေဖြင့်သင်္ကေတ:

#! / usr / local / bin / မျှော်လင့်ထား -f

ဘဝတွေကိုမျှော်လင့်ဘယ်မှာ၏သင်တန်း, လမ်းကြောင်းတိကျစွာဖော်ပြရန်ရမည်ဖြစ်သည်။ / usr / local / bin ရုံဥပမာတစ်ခုဖြစ်ပါတယ်။

အဆိုပါ -c အလံ script ထဲမှာမဆိုမတိုင်မီကွပ်မျက်ခံရခံရဖို့ command တစ်ခုပေးပါသည်။ အဆိုပါ command ကို shell ကိုတက်ကျိုးပဲ့ခံကာကွယ်တားဆီးဖို့ကိုးကားရပါမည်။ ဒီ option ကအကြိမ်ပေါင်းများစွာကိုအသုံးပြုနိုင်ပါသည်။ အကွိမျမြားစှာပညတ်တော်တို့ကို semicolon သူတို့နှင့်အတူခွဲထုတ်ခြင်းဖြင့်တစ်ခုတည်း -c နှင့်အတူကွပ်မျက်ခံရနိုင်ပါသည်။ commands သူတို့ပေါ်လာသည့်နိုင်ရန်အတွက်ကွပ်မျက်ခံရနေကြသည်။ Expectk သုံးပြီးသောအခါ, ဤ option ကို -command အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။

အဆိုပါ -D အလံအဓိကအားထိုကဲ့သို့သောမျှော်လင့်ထားခြင်းနှင့်အပြန်အလှန်အဖြစ်ပညတ်တော်ပြည်တွင်းရေးလှုပ်ရှားမှုသတင်းပေးပို့ထားတဲ့အချို့သောရောဂါရှာဖွေ output ကို, နိုင်ပါတယ်။ ဤသည်အလံတစ်ခုမျှော်လင့် script ကိုရဲ့အစမှာ "exp_internal 1" ကဲ့သို့အလားတူအကျိုးသက်ရောက်မှုရှိပါတယ်, ပေါင်းမျှော်လင့်၏ဗားရှင်းပုံနှိပ်ဖြစ်ပါတယ်။

အဆိုပါ -D အလံတစ်ခုအပြန်အလှန် debugger နိုင်ပါတယ်။ တစ်ခုက integer ဖြစ်တဲ့အတွက်တန်ဖိုးအားလိုကျနာသငျ့သညျ။ တန်ဖိုး Non-သုညတစ်ခုသို့မဟုတ် ^ C ကိုနှိပ်နေသည်သို့မဟုတ်တစ် breakpoints အားဝင်တိုက်သည်သို့မဟုတ်အခြားသင့်လျော်သည့် debugger command ကိုဇာတ်ညွှန်းထဲမှာပေါ်လာလိမ့်မယ်လျှင်လျှင်အဆိုပါ debugger လာမည့် TCL လုပ်ထုံးလုပ်နည်းမတိုင်မီထိန်းချုပ်မှုယူပါလိမ့်မယ်။ ဒီဘာဂ် - Expectk သုံးပြီးသောအခါ, ဤ option အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။

အဆိုပါ -f အလံပညတ်တော်တို့ကိုဖတ်ရှုဖို့ရာကနေဖိုင်တစ်ခုပေးပါသည်။ အဆိုပါ # သုံးပြီးသောအခါမှသာအသုံးဝင်သည်အဖြစ်အလံကိုယ်နှိုက်ရွေးချယ်နိုင်ပါ! သင်္ကေတ, အခြားအငြင်းပွားမှုများက command line ပေါ်ထောက်ပံ့စေခြင်းငှါဒါ။ Expectk သုံးပြီးသောအခါ, ဤ option ကို -file အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။

ပုံမှန်အားဖြင့်, အမိန့်ဖိုင်သို့ဖတ်ပါနေသည် မှတ်ဉာဏ် နှင့်၎င်း၏တခုလုံးကိုကွပ်မျက်။ ဒါဟာအချိန်ကဖိုင်တွေတဦးတည်းလိုင်းဖတ်ရှုဖို့ရံဖန်ရံခါနှစ်လိုဖွယ်ဖြစ်ပါသည်။ ဤနည်းအားကိုင်တွယ်ခံရဖို့လိုမင်းထက်ဖိုင်တွေအတင်းရန်အလို့ငှာခုနှစ်, -b အလံကိုအသုံးပြုပါ။ Expectk သုံးပြီးသောအခါ, ဤ option ကို -buffer အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။

string ကို အကယ်. "-" တစ်ဦးဖိုင်အမည်အဖြစ်ထောက်ပံ့နေသည်, စံ input ကိုအစားကိုဖတ်ဖြစ်ပါတယ်။ ကိုသုံးပါ "./-" အမှန်တကယ်အမည်ရှိဖိုင်တစ်ဖိုင်ကနေဖတ်ရှုဖို့ "-" ။

အဆိုပါ -i အလံအကြောင်းတရားများ interactive ပညတ်တော်တို့ကိုအစားဖိုင်တစ်ဖိုင်ကနေသူတို့ကိုဖတ်နေဘို့တောင်းလာမှမျှော်လင့်။ ချက်ချင်းထွက်ပေါက် command ကိုမှတဆင့်သို့မဟုတ် EOF အပေါ်သို့ရပ်စဲသည်။ command တစ်ခုဖိုင်မဟုတ်သလို -c မကိုအသုံးပြုသည်ဆိုပါကအဆိုပါ -i အလံယူဆနေသည်။ Expectk သုံးပြီးသောအခါ, ဤ option ကို -interactive အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။

- ရှေးခယျြစရာမြား၏အဆုံးကိုအနားသတ်မျဉ်းဖို့အသုံးပြုနိုင်ပါသည်။ သင်ကမျှော်လင့်အားဖြင့်အနက်ခံမရှိဘဲသင်၏ဇာတ်ညွှန်းတစ်ခု option ကို-တူသောအငြင်းအခုံရှောက်သွားချင်တယ်ဆိုရင်ဒီအအသုံးဝင်သည်။ ဤသည်အသုံးဝင်သည့် # ထဲတွင်နေရာနိုင်ပါသည်! မျှော်လင့်ခြင်းဖြင့်မည်သည့် flaglike အနက်ကိုကာကွယ်တားဆီးဖို့လိုင်း။ ဥပမာအားဖြင့်, အောက်ပါပု variable ကို argv အတွက် script ကိုနာမကိုအမှီအပါအဝင်မူရင်းအငြင်းပွားမှုများချန်ထားမည်။

! # / usr / local / bin / မျှော်လင့်ထား -

ပုံမှန်အတိုင်းသတိပြုပါ getopt အဆိုပါ # ဖို့အငြင်းပွားမှုများထည့်သွင်းတဲ့အခါမှာ (3) နှင့် execve (2) စည်းဝေးကြီးများလေ့လာတွေ့ရှိရမည်ဖြစ်သည်! လိုင်း။

ပစ္စုပ္ပန်လျှင် -N အလံကိုအသုံးပြုသည်မဟုတ်လျှင်ဖိုင် $ exp_library / expect.rc အလိုအလျောက်ရင်းမြစ်ထားတဲ့ဖြစ်ပါတယ်။ (Expectk သုံးပြီးသောအခါ, ဤ option ကို -NORC အဖြစ်သတ်မှတ်ပါတယ်။ ) ကို -n အလံကိုအသုံးပြုသည်မဟုတ်လျှင်ထိုခဏခြင်းတွင်ထိုနောက်မှ, ~ / .expect.rc ဖိုင်ကိုအလိုအလျောက်ရင်းမြစ်ထားတဲ့ဖြစ်ပါတယ်။ ပတ်ဝန်းကျင် variable ကို DOTDIR သတ်မှတ်ထားသောသည်ဆိုပါကတစ်ဦးသည် directory အဖြစ်ကုသနှင့် .expect.rc အဲဒီမှာမှဖတ်ဖြစ်ပါတယ်။ Expectk သုံးပြီးသောအခါ, ဤ option ကို -norc အဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်။ ဤအရင်းအမြစ်သာဆို -c အလံကွပ်မျက်ပြီးနောက်တွေ့ရှိနိုင်ပါသည်။

-v အကြောင်းတရားများသည်၎င်း၏ဗားရှင်းနံပါတ်နှင့်ထွက်ပေါက် print ထုတ်နိုင်ဖို့မျှော်လင့်ပါ။ ရှည်လျားသောအလံအမည်များကိုအသုံးပြုထားတဲ့ Expectk အတွက်သက်ဆိုင်ရာအလံ, -version ဖြစ်ပါတယ်။

optional args စာရင်းတစ်ခုထဲသို့ဆောက်လုပ်ထားနှင့် variable ကိုအမည်ဖြင့်မှည့ argv ထဲမှာသိမ်းထားတဲ့နှင့်နေကြသည်။ argc argv ၏အရှည်မှနဖြစ်ပါတယ်။

Argv0 မျှ script ကိုအသုံးပြုသည်ဆိုပါကဇာတ်ညွှန်းသို့မဟုတ်ဘိုင်နရီ၏နာမတော်ကိုဖြစ်သတ်မှတ်ထားသည်။ ဥပမာအားဖြင့်, အောက်ပါ script ကိုများနှင့်ပထမသုံးအငြင်းပွားမှုများ၏နာမကိုအထဲကနေရိုက်ထုတ်:

send_user "$ argv0 [lrange $ argv 0 င် 2] \ n"

commands

Tool ကိုစစ်ဌာနချုပ်ဘာသာစကားများကိုအသုံးပြုသည်မျှော်လင့်ထား။ TCL, (ကိုချိုးဖျက်သည်လျှင်) စကားရပ်အကဲဖြတ်ခြင်းနှင့်ထိုကဲ့သို့သော recursionand လုပ်ထုံးလုပ်နည်းနှင့်အဓိပ္ပါယ်အဖြစ်အခြား features တွေထိန်းချုပ်မှုစီးဆင်းမှုပေးပါသည်။ commands ဒီနေရာမှာအသုံးပြုခဲ့ပေမယ့် (set ကိုလျှင်, အမှုဆောင်အရာရှိ) သတ်မှတ်မပေး TCL ပညတ်တော်တို့ကိုဖြစ်ကြသည်။ အပိုဆောင်းပညတ်တော်တို့ကိုထောကျပံ့မျှော်လင့်ထား။ မဟုတ်ရင်သတ်မှတ်ထားသောမဟုတ်လျှင်, ပညတ်တို့ကို၎င်းဗလာ string ကိုပြန်သွားပါ။

သူတို့လျင်မြန်စွာတည်ရှိနိုင်ဒါ commands အက္ခရာစဉ်စာရင်းနေကြသည်။ သို့သော်သစ်သည်အသုံးပြုသူများပိုမိုလွယ်ကူ, spawn များ၏ဖော်ပြချက်ဖတ်နေစတင်အသုံးပြုနိုင်မည်ပေးပို့, မျှော်လင့်ခြင်းနှင့်အပြန်အလှန်သောနိုင်ရန်အတွက်မှရှာတွေ့လိမ့်မည်။

အနီးကပ် [-slave] [-onexec 0 င် | 1] [-i spawn_id]

လက်ရှိဖို့ကွန်နက်ရှင်ပိတ် ဖြစ်စဉ်ကို ။ အများစုကအပြန်အလှန်အစီအစဉ်များကို detect လိမ့်မယ် EOF သူတို့ရဲ့ stdin နှင့်ထွက်ပေါက်အပေါ်; အရှင်ပုံမှန်အားဖြင့်သတ်ခြင်းငှါနီးစပ်အဘို့လောက်ပေ ဖြစ်စဉ်ကို အဖြစ်ကောင်းစွာ။ အဆိုပါ -i အလံအဆိုပါမိန့်တော်မူ၏ ဖြစ်စဉ်ကို ပုအမည်ရှိ spawn_id မှသက်ဆိုင်ရာပိတ်ဖို့ရန်။

နှစ်ဦးစလုံးမျှော်လင့်ထားခြင်းနှင့်အပြန်အလှန်သည့်အခါလက်ရှိ detect လိမ့်မယ် ဖြစ်စဉ်ကို ထွက်ပေါက်နှင့်လုံးလုံးလြားလြားအနီးကပ်ပြုပါ, ဒါပေမယ့်သင်ကသတ်လျှင် ဖြစ်စဉ်ကို "အမှုဆောင်အရာရှိ, kill $ PID" ဟုပြောဆိုသဖြင့်, သင်ရှင်းရှင်းလင်းလင်းအနီးကပ်ကိုခေါ်ဖို့လိုသည်။

အဆိုပါ -onexec အလံဟာ spawn အိုင်ဒီမဆိုသစ်ကိုပိတ်ပါသည်ရှိမရှိဆုံးဖြတ်သည် မွေးထုတ် ဖြစ်စဉ်များသို့မဟုတ်လျှင် ဖြစ်စဉ်ကို overlayed ဖြစ်ပါတယ်။ ပွင့်လင်းတဲ့ spawn အိုင်ဒီစွန့်ခွာရန်, တန်ဖိုးကို 0. ကိုအသုံးပြုဖို့တစ်ဦးက Non-သုညကိန်းတန်ဖိုး spawn မဆိုအသစ်ကလုပ်ငန်းစဉ်များတွင်ပိတ်ထားတွန်းအားပေးသည်။

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

ဆက်သွယ်မှုလုံးလုံးလြားလြားသို့မဟုတ်အတိအလင်းပိတ်ပါသည်ရှိမရှိနေပါစေ, သင်သက်ဆိုင်ရာ kernel ကိုတက်ရှင်းလင်းရန်စောင့်ဆိုင်းမခေါ်သင့်ပါတယ် ဖြစ်စဉ်ကို slot က။ အဆိုပါနီးစပ် command ကိုတစ်ဦးပိတ်ကြောင်းအာမခံချက်မရှိပါကတည်းကစောင့်ဆိုင်းမခေါ်ပါဘူး ဖြစ်စဉ်ကို ကွန်နက်ရှင်ကမှထွက်ရန်ဖြစ်ပေါ်စေပါလိမ့်မယ်။

ဒီဘာဂ် [[-now] 0 | 1]

သငျသညျထုတ်ပြန်ချက်များနှင့်အစု breakpoints အားတဆင့်ခြေလှမ်းဖို့ခွင့်ပြုမယ့် TCL debugger ထိန်းချုပ်သည်။

အဘယ်သူမျှမငြင်းခုံနှင့်အတူ, တစ်ဦး 1 debugger မဟုတ်ရင်, run မပါလျှင်တစ်ဦး 0 င်ပြန်ရောက်တာဖြစ်ပါတယ်ပြန်ရောက်နေပါတယ်။

1 အငြင်းအခုံနှင့်တကွ, debugger စတင်ခဲ့ခြင်းဖြစ်သည်။ တစ်ဦး 0 င်ငြင်းခုံနှင့်တကွ, debugger ရပ်တန့်နေသည်။ 1 အငြင်းအခုံဟာ -now အလံအားဖြင့်ရှေ့ပြေးလျှင်, debugger ချက်ချင်းစတင်ခဲ့ခြင်းဖြစ်သည်။ ဒီလိုမှမဟုတ်ရင်, ထို debugger လာမည့် TCL ကြေညာချက်နဲ့စတင်တာဖြစ်ပါတယ်။

အဆိုပါဒီဘာဂ် command ကိုမဆိုထောင်ချောက်ကိုပြောင်းလဲမပေးပါဘူး။ အဆိုပါ -D အလံနှင့်အတူမျှော်လင့်ထားစတင်ဤနှိုင်းယှဉ်ကြည့်ပါ။

အဆိုပါဆက်သွယ်မှုပြတ်တောက် command ကိုတစ်ချိတ်ပြတ်တောက်သွားပါသည် ဖြစ်စဉ်ကို မှ terminal ကို ။ ဒါဟာနောက်ခံအပြေးနေဆဲဖြစ်သည်။ အဆိုပါဖြစ်စဉ်ကို၎င်း၏ကိုယ်ပိုင်လုပ်ငန်းစဉ်သည်အုပ်စုတစ်စုပေးထားသည်။ စံ I / O မှ redirected ဖြစ်ပါတယ် / dev / null

အောက်ပါအပိုင်းအစအသုံးပြုမှုနောက်ခံအတွက် script ကို run နေဆက်လက် disconnect ။

လျှင် {[လမ်းဆုံလမ်းခွ]! = 0} ထွက်ပေါက်ဆက်သွယ်မှုပြတ်တောက်။ ။ ။

အောက်ပါ script ကိုစကားဝှက်တစ်ခုဖတ်, ပြီးတော့ password တစ်ခုကပြေးနေသည်တစ်ခုချင်းစီကိုအချိန်တောင်းဆိုနေပြီသော program တစ်ခုတိုင်းနာရီအလုပ်လုပ်ပြီး။ သငျသညျကွိမျသာကရိုက်ထည့်ရန်ရှိသည်သို့မှသာအဆိုပါ script ကိုစကားဝှက်ကိုဖြန့်ဖြူး။

send_user "စကားဝှက် \?" expect_user -re "\ n က (* ။ )" {} 1 {} {{[လမ်းဆုံလမ်းခွ] လျှင် = 0} {အိပ်ပျော်ခြင်း 3600;} ဆက်သွယ်မှုပြတ်တောက် spawn priv_prog Password ကိုမျှော်လင့်ထားကိုဆက်လက်: ( "$ expect_out ပေးပို့ 1, string ကို) \ r "။ ။ ။ ထွက်ပေါက် }

shell ကိုပြတ်တောင်းပြတ်တောင်းဖြစ်စဉ်ကိုအင်္ဂါရပ် (&) ကျော်အဆက်ပြတ်မှုကို အသုံးပြု. တစ်ခုအားသာချက်ကြောင့်ကြိုတင်အဆက်ဖြုတ်ဖို့ terminal ကို parameters တွေကို save ပြီးတော့နောက်ပိုင်းမှာအသစ်အ ptys သူတို့ကိုလျှောက်ထားနိုင်ပါသည်မျှော်လင့်သည်။ ထိန်းချုပ်မှုအားလက်ခံတွေ့ဆုံနှင့်အတူ &, terminal ကိုထားပြီးအချိန်အားဖြင့်အဆက်ပြတ်နေသည်ကတည်းက terminal ကိုဖွင့် parameters တွေကိုဖတ်ရှုဖို့အခွင့်အလမ်းမရှိပါဘူးမျှော်လင့်မျှော်လင့်။

ထွက်ပေါက် [-opts] [status ကို]

အကြောင်းတရားများကို exit သို့မဟုတ်မဟုတ်ရင်အဲဒီလိုလုပ်ဖို့ပြင်ဆင်ထားရန်မျှော်လင့်။

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

အဆိုပါ -noexit အလံအကြောင်းတရားများကို exit ပေမယ့်အမှန်တကယ် operating system ကိုမှထိန်းချုပ်မှုပြန်လာ၏တိုတောင်းသောရပ်တန့်ဖို့ပြင်ဆင်ထားရန်မျှော်လင့်။ အသုံးပြုသူ-defined ထွက်ပေါက် handler ကိုအဖြစ်ကောင်းစွာရဲ့ကိုယ်ပိုင်ပြည်တွင်းရေးကိုင်တွယ်မျှော်လင့်အဖြစ် run သည်။ အဘယ်သူမျှမကနောက်ထပ် command များကွပ်မျက်ခံရရပါမည်မျှော်လင့်။ သင်သည်အခြား TCL extension တွေနဲ့အတူမျှော်လင့်ထား running လျှင်ဤသည်အသုံးဝင်သည်။ အခြားအ TCL extension များကို clean up နိုင်အောင်လက်ရှိစကားပြန် (နှင့်အဓိကဝင်းဒိုး Tk ပတ်ဝန်းကျင်တွင်လျှင်) ရှိနေဆဲဖြစ်ပါသည်။ (သို့သော်ဒီဖြစ်ပေါ်စေခြင်းငှါ,) ရဲ့ထွက်ပေါက်ကိုထပ်ဟုခေါ်သည်မျှော်လင့်လျှင်, ကိုင်တွယ် rerun ကြသည်မဟုတ်။

မထွက်ပေါ်၌မွေးထုတ်ဖြစ်စဉ်များဆက်သွယ်မှုအားလုံးကိုပိတ်လိုက်ရသည်။ ပိတ်သိမ်းမွေးထုတ်ဖြစ်စဉ်များအားဖြင့်တစ်ဦး EOF အဖြစ်တွေ့ရှိလိမ့်မည်။ ထွက်ပေါက်ပုံမှန် _exit (2) လုပ်ထုံးလုပ်နည်းမအဘယ်အရာကိုကျော်လွန်ပြီးအဘယ်သူမျှမကအခြားလုပ်ရပ်များကြာပါသည်။ ထို့ကြောင့် EOF စစ်ဆေးသည်မဖြစ်စဉ်များကို run ဖို့ဆက်လက်ဖြစ်နိုင်သည်မွေးထုတ်။ (အခြေအနေတစ်ဦးအမျိုးမျိုးအဆုံးအဖြတ်ပေးဖို့အရေးကြီးလှသည်ဥပမာ, ပုံမှန်အားဖြင့် (3) ထွက်ပေါက်အောက်တွင်မှတ်တမ်းတင်ဘယျအရာတစ်ဦးမွေးထုတ်ခြင်းလုပ်ငန်းစဉ်ကိုစလှေတျပါလိမ့်မည်ပေမယ့်ဒီစနစ်က-မှီခိုနေကြသည်အချက်ပြလိုက်ခြင်း။ ) ကို run ဖို့ဆက်လက်ဖြစ်စဉ်များ init နေဖြင့်အမွေဆက်ခံလိမ့်မည်မွေးထုတ်။

အဆင့်အတန်း (သို့မဟုတ် 0 င်လျှင်မသတ်မှတ်ထားသော) မျှော်လင့်၏ထွက်ပေါက် status ကိုအဖြစ်ပြန်ရောက်နေပါတယ်။ ဇာတ်ညွှန်း၏အဆုံးသို့ရောက်ရှိလျှင်ထွက်ပေါက်လုံးလုံးလြားလြားကွပ်မျက်ခံရခြင်းဖြစ်သည်။

exp_continue [-continue_timer]
အဆိုပါ command ကို exp_continue သူ့ဟာသူကွပ်မျက်ထက်ကပုံမှန်အားဖြင့်အလိုတခုတည်းအဖြစ်ပြန်လာဆက်လက်မျှော်လင့်ထားခွင့်ပြုပါတယ်။ default အ exp_continue အားဖြင့်အချိန်ကုန် timer နေရာမှာ reset လုပ်တယ်။ အဆိုပါ -continue_timer အလံပြန်လည်စတင်ခံရခြင်းမှ timer နေရာမှာကာကွယ်ပေးသည်။ (နောက်ထပ်သတင်းအချက်အလက်များအဘို့ကိုမျှော်လင့်တွင်ကြည့်ပါ။ )

exp_internal [-f ဖိုင်] တန်ဖိုးကို
ရန်မျှော်လင့်ဖို့အဖြေရှာတဲ့သတင်းအချက်အလက်ပြည်တွင်းရေးပေးပို့ဖို့နောက်ထပ် command များကိုဖြစ်ပေါ်စေသည် stderr တန်ဖိုးကို Non-သုညလျှင်။ တန်ဖိုးအား 0. အဆိုပါရောဂါရှာဖွေသတင်းအချက်အလက်တိုင်းဇာတ်ကောင်ကိုလက်ခံရရှိနှင့်တိုင်းကြိုးပမ်းမှုဟာပုံစံများဆန့်ကျင်လက်ရှိ output ကိုကိုက်ညီစေပါဝင်သည်လျှင်ဤသည်ကို output ကိုပိတ်ထားသည်။

အဆိုပါ optional ကိုဖိုင်ထောက်ပံ့လျှင်အားလုံးပုံမှန်နှင့် debugging ကို output (မသက်ဆိုင်တန်ဖိုးကို၏တန်ဖိုး၏) ထိုဖိုင်ရေးသားခဲ့သူဖြစ်ပါတယ်။ မဆိုယခင်အဖြေရှာတဲ့ output ကိုဖိုင်ကိုတံခါးပိတ်ဖြစ်ပါတယ်။

အဆိုပါ -info အလံပေးထားလတ်တလော Non-အင်ဖိုအငြင်းပွားမှုများ၏ဖော်ပြချက်ပြန်သွားဖို့ exp_internal ကိုဖြစ်ပေါ်စေသည်။

exp_open [args] [-i spawn_id]
မူရင်း spawn အိုင်ဒီမှကိုက်ညီမယ့် TCL ဖိုင်အမှတ်အသားပြန်လည်ရောက်ရှိ။ က TCL ရဲ့ပွင့်လင်း command ကိုအားဖြင့်ဖွင့်လှစ်ခဲ့ကြသည်လျှင်အဖြစ်ဖိုင်အမှတ်အသားပြီးတော့သုံးနိုင်တယ်။ (အဆိုပါ spawn အိုင်ဒီမရှိတော့အသုံးပြုသင့်ပါသည်။ တစ်ဦးကချောင်းမြောင်းကွပ်မျက်ခံရမရသင့်ပါတယ်။

အဆိုပါ -leaveopen အလံတဆင့် command များမျှော်လင့် access များအတွက်ဖွင့် spawn အိုင်ဒီထွက်ခွာမည်။ တစ်ဦးက ချောင်းမြောင်း အဆိုပါ spawn အိုင်ဒီအပေါ်ကွပ်မျက်ခံရရမည်ဖြစ်သည်။

exp_pid [-i spawn_id]
လက်ရှိမွေးထုတ်လုပ်ငန်းစဉ်သက်ဆိုင်ရာလုပ်ငန်းစဉ်အိုင်ဒီပြန်လည်ရောက်ရှိ။ အဆိုပါ -i အလံကိုအသုံးပြုသည်ဆိုပါက, PID ပေးထားသော spawn အိုင်ဒီ၏ရန်သက်ဆိုင်ရာသို့ပြန်သွား၏။

exp_send
ပို့တစ်ခု alias ကိုဖြစ်ပါတယ်။

exp_send_error
send_error တစ်ခု alias ကိုဖြစ်ပါတယ်။

exp_send_log
send_log တစ်ခု alias ကိုဖြစ်ပါတယ်။

exp_send_tty
send_tty တစ်ခု alias ကိုဖြစ်ပါတယ်။

exp_send_user
send_user တစ်ခု alias ကိုဖြစ်ပါတယ်။

exp_version [[-exit] ဗားရှင်း]
ဇာတ်ညွှန်းမျှော်လင့်၏လက်ရှိဗားရှင်းနဲ့သဟဇာတဖြစ်ကြောင်းအာမခံများအတွက်အသုံးဝင်သည်။

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

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

ဒုတိယအသေးစားအရေအတွက်ဖြစ်ပါတယ်။ လက်ရှိဗားရှင်းထက် သာ. ကြီးမြတ်အသေးစားအရေအတွက်ကိုအတူဗားရှင်းစရာဘို့ကျမ်းစာ၌ရေးထား scripts အချို့ feature အသစ်အပျေါမှာမူတည်နိုင်ပြီး run မရပေလိမ့်မည်။ exp_version အဓိကနံပါတ်များကိုပွဲစဉ်လျှင်မှားယွင်းမှုတစ်ခုပြန်လည်ရောက်ရှိပေမယ့် script ကိုအသေးအဖှဲအရေအတွက်ကမျှော်လင့်နေကြောင်းထက် သာ. ကြီးမြတ်သည်။

တတိယဗားရှင်းနှိုင်းယှဉ်လျှင်အဘယ်သူမျှမစိတျအပိုငျးကစားမယ့်အရေအတွက်ဖြစ်ပါတယ်။ အဆိုပါမျှော်လင့် software ကိုဖြန့်ဖြူးမည်သည့်လမ်းအတွက်ပြောင်းလဲသွားတယ်သောအခါသို့သော်ထိုသို့သောအပိုဆောင်းစာရွက်စာတမ်းများသို့မဟုတ်သင့်မြတ်အောင်လုပ်ကိုင်ခြင်းဖြင့်အဖြစ်အဆတိုးနေသည်။ ဒါဟာတစ်ဦးချင်းစီအသစ်ကအသေးစားဗားရှင်းအပျေါမှာ 0 င်ဖို့ကို reset ဖြစ်ပါတယ်။

ဗားရှင်းနေ့စွဲထဲကတစ်ခုဖြစ်သည်လျှင် -exit အလံနှင့်အတူ, မျှော်လင့်ထားတဲ့အမှားနှင့်ထွက်ပေါက်နေရိုက်ထုတ်။

[[-opts] pat1 body1] ... [-opts] patn [bodyn] မျှော်လင့်ထား
အဆိုပါပုံစံများကိုတစ်ဦးတစ်ဦးမွေးထုတ်လုပ်ငန်းစဉ်၏ output ကိုကိုက်ညီသည်အထိစောင့်တစ်ဦးသတ်မှတ်ထားသောအချိန်ကာလအတွင်းလွန်ပြီ, ဒါမှမဟုတ်တစ်ဦးအဆုံး-of file ကိုမြင်ကြခြင်းဖြစ်သည်။ နောက်ဆုံးခန္ဓာကိုယ်ဗလာဖြစ်နေသည်ဆိုပါကချန်လှပ်နိုင်ပါသည်။

လတ်တလော expect_before command ကိုထံမှပုံစံများလုံးလုံးလြားလြားမဆိုအခြားပုံစံများမတိုင်မီအသုံးပြုကြသည်။ လတ်တလော expect_after command ကိုထံမှပုံစံများလုံးလုံးလြားလြားမဆိုအခြားပုံစံများအပြီးအသုံးပြုကြသည်။

တစ်ခုလုံးကိုဖို့အငြင်းပွားမှုများကြေညာချက်တစ်ဦးထက်ပိုလိုင်းလိုအပ်မျှော်လင့်ထားခဲ့လျှင်တစ်ဘယ်ဘက်မျဉ်းစောင်းစီ line ကိုရပ်စဲရှောင်ရှားရန်သကဲ့သို့, လူအပေါင်းတို့သည်ငြင်းခုံတစျခုသို့ "braced" နိုင်ပါသည်။ ဒီတစ်ခုကိစ္စတွင်ခုနှစ်, ပုံမှန်အတိုင်း TCL အစားထိုးသည့်မသန်စွမ်းပဲကြားမှပေါ်ပေါက်လိမ့်မယ်။

တစ်ပုံစံ keyword ကို eof ဖြစ်လျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်အဆုံး-of file ကိုအပေါ်သို့ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ တစ်ပုံစံ keyword ကိုအချိန်ကုန်ဖြစ်လျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်အချိန်ကုန်အပေါ်သို့ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ အဘယ်သူမျှမအချိန်ကုန် keyword ကိုအသုံးပြုသည်ဆိုပါကတစ်ဦးသွယ်ဝိုက်တရားမဝင်သောအရေးယူအချိန်ကုန်အပေါ်သို့ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ အဆိုပါ default အနေနဲ့အချိန်ကုန်ကာလ 10 စက္ကန့်ဖြစ်ပါတယ်ပေမယ့် command ကိုအသုံးပြုပုံမှ 30 ဥပမာ set စေခြင်းငှါ "အချိန်ကုန် 30 ရက်ကိုသတ်မှတ်" ။ တစ်ဦးအဆုံးမဲ့အချိန်ကုန်တန်ဖိုးအားဖြင့်သတ်မှတ်ထားသောစေခြင်းငှါ -1 ။ တစ်ပုံစံ keyword ကို default အနေနဲ့ဖြစ်ပြီးလျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်ဖြစ်စေအချိန်ကုန်သို့မဟုတ်အဆုံး-of file ကိုအပေါ်သို့ကွပ်မျက်ခံရခြင်းဖြစ်သည်။

တစ်ပုံစံကိုက်ညီလျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ (အဘယ်သူမျှမပုံစံကိုက်ညီလျှင်သို့မဟုတ်ဗလာ string ကို) ပြန်ကိုယ်ခန္ဓာ၏ရလဒ်မျှော်လင့်ထား။ မျိုးစုံပုံစံများကိုက်ညီသောအဖြစ်အပျက်မှာတော့ပထမဦးဆုံးပေါ်ထွန်းတယျခန်ဓာကိုရှေးခယျြဖို့အသုံးပြုသည်။

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

ပုံစံများသုံးနည်းလမ်းသတ်မှတ်ထားသောနေကြသည်။ ပုံမှန်အားဖြင့်ပုံစံများ TCL ရဲ့ string ကိုပွဲစဉ် Command ဖြင့်အဖြစ်သတ်မှတ်ထားသောနေကြသည်။ (ထိုသို့သောပုံစံများလည်းအလားတူဖြစ်ကြောင်း ကို C-shell ကို များသောအားဖြင့် "glob" ပုံစံများအဖြစ်ရည်ညွှန်း regular expressions ကို) ။ အဆိုပါ -gl အလံမဟုတ်ရင်ဒါလုပ်နေတာကနေအလံမျှော်လင့်ထားကိုက်ညီစေခြင်းငှါပုံစံများကာကွယ်ပေးဖို့အသုံးပြုစေခြင်းငှါဖြစ်နိုင်သည်။ "-" တစ်ဦးနှင့်အတူစတင်မဆိုပုံစံဤနည်းဖြင့်ကာကွယ်ထားသင့်ပါတယ်။ (အားလုံးညှို့နှင့်အတူစတင် "-" အနာဂတ်ရွေးချယ်စရာအဘို့သိုထားကြသည်။ )

ဥပမာအားဖြင့်, အောက်ပါအပိုင်းအစအောင်မြင်တဲ့ရဲ့ login များအတွက်ကြည့်ရှုသည်။ (abort ပြုလုပ်မှတ်ချက်တခြားနေရာ script ထဲမှာသတ်မှတ်နေတဲ့လုပ်ထုံးလုပ်နည်းဖြစ်ယူဆနေသည်။ )

; {n ကအလုပ်များ \ ထည့်လေ့မရှိ {အလုပ်များမျှော်လင့်ထား exp_continue}} အချိန်ကုန်ချိတ်ဆက် abort abort ဖျက်သိမ်းသည် "မမှန်ကန်တဲ့ password ကို" ပျက်ကွက်

ဒါဟာမဟုတ်ရင်လုပ်ဆောင်ချက်အနေဖြင့်ပုံစံခွဲခြားလိုတဲ့နေရာပါရှိသည်ကတည်းက quotes စတုတ္ထပုံစံအပေါ်လိုအပ်သောဖြစ်ကြသည်။ (ဥပမာ 3rd နှင့် 4th ကဲ့သို့) တူညီသောအရေးယူမှုနှင့်အတူပုံစံများကိုထပ်လုပ်ရပ်များစာရင်းလိုအပ်သည်။ ဤသည် (အောက်တွင်ကြည့်ပါ) regexp-စတိုင်ပုံစံများ အသုံးပြု. ရှောင်ရှားနိုင်ပါတယ်။ glob-စတိုင်ပုံစံများဖွဲ့စည်းနောက်ထပ်သတင်းအချက်အလက်များ TCL လက်စွဲစာအုပ်တှငျတှေ့နိုငျပါသညျ။

Regexp-စတိုင်ပုံစံများ TCL ရဲ့ regexp ( "ပုံမှန်စကားရပ်" အတိုကောက်) command ကိုတို့ကသတ်မှတ်ထားတဲ့ syntax လိုက်နာပါ။ regexp ပုံစံများအလံ -re နှင့်အတူမိတ်ဆက်ကြသည်။ ယခင်သာဓကအဖြစ် regexp သုံးပြီးပြန်လည်ပြင်ဆင်ရေးနိုင်ပါတယ်:

; {n ကအလုပ်များ \ ထည့်လေ့မရှိ {အလုပ်များမျှော်လင့်ထား } အချိန်ကုန်ချိတ်ဆက် abort abort | "မမှန်ကန်တဲ့ password ကိုပျက်ကွက်" exp_continue} -re

ပုံစံများနှစ်ဦးစလုံးအမျိုးအစားများကို "unanchored" ဖြစ်ပါသည်။ ဤ (နေသမျှကာလပတ်လုံးအခြားအရာအားလုံးကိုက်ညီကဲ့သို့) ပုံစံများတစ်ခုလုံးကို string ကိုကိုက်ညီရန်မလိုပါဆိုလိုသည်ဒါပေမယ့် string ကိုအတွက်ဘယ်နေရာမှာမဆိုပွဲကိုစတင်နှင့်အဆုံးသတ်နိုင်ပါတယ်။ အဆုံးကိုက်ညီဖို့တစ်ဦး string ကို၏အစအဦးများနှင့် $ ကိုက်ညီ ^ သုံးပါ။ သင်တစ်ဦး string ကို၏အဆုံးအဘို့မစောင့်ကြပါလျှင်၎င်းတို့သည်မွေးထုတ်ခြင်းလုပ်ငန်းစဉ်ကနေသံယောင်နေကြသည်အတိုင်း, သင်တို့၏တုံ့ပြန်မှုအလွယ်တကူ string ကိုအလယ်၌အဆုံးသတ်နိုင်ပါတယ်သတိပြုပါ။ နေဆဲမှန်ကန်သောရလဒ်များကိုထုတ်လုပ်နေစဉ်, က output သဘာဝကိုကြည့်နိုင်ပါတယ်။ သငျသညျအတိအကျတစ်ဦး string ကို၏အဆုံးမှာဇာတ်ကောင်ကိုဖော်ပြရန်နိုင်မယ်ဆိုရင်ထို့ကြောင့် $ ၏အသုံးပြုမှုကိုအားပေးအားမြှောက်ဖြစ်ပါတယ်။

အများအပြားအယ်ဒီတာများထဲမှာ, ^ နှင့် $ အသီးသီးလိုင်းများ၏အစနှင့်အဆုံးကိုကိုက်ညီသောသတိပြုပါ။ မျှော်လင့်ထား oriented တန်းစီမရသောကြောင့်သို့သော်ဤဇာတ်ကောင်လက်ရှိတွင်မျှော်လင့်ထားတူညီသည့်ကြားခံအတွက် (လိုင်းများမှဆန့်ကျင်ကဲ့သို့) ဒေတာ၏အစနှင့်အဆုံးကိုကိုက်ညီမှုမရှိပါ။ (ဒါ့အပြင်အပေါ်အောက်ကမှတ်ချက်တွေ့မြင် "စနစ်ကရင်။ ")

အဆိုပါ -ex အလံတစ်ခု "အတိအကျ" string ကိုအဖြစ်လိုက်ဖက်ခံရဖို့ပုံစံကိုဖြစ်ပေါ်စေသည်။ * ^, etc ၏အဘယ်သူမျှမအနက် (ပုံမှန်အတိုင်း TCL စည်းဝေးကြီးများနေဆဲလေ့လာတွေ့ရှိရမည်ဖြစ်သည်ပေမယ့်) ကိုဖန်ဆင်းသည်။ အတိအကျပုံစံများအမြဲ unanchored ဖြစ်ကြသည်။

အဆိုပါ -nocase အလံသူတို့အသေးစာလုံးများကိုဖြစ်လျှင်အဖြစ်နှိုင်းယှဉ်ဖို့က output ၏အကြီးအဇာတ်ကောင်ကိုဖြစ်ပေါ်စေသည်။ အဆိုပါပုံစံထိခိုက်နစ်နာမဟုတ်ပါဘူး။

output ကိုဖတ်ရှုခြင်းနေစဉ်, ထက်ပိုမို 2000 bytes "မေ့လျော့" ခံရဖို့အစောပိုင်းက bytes အတင်းနိုင်ပါတယ်။ ဒါဟာ function ကို match_max နှင့်အတူပြောင်းလဲသွားနိုင်ပါသည်။ patlist full_buffer အကယ်. match_max bytes ကိုလက်ခံရရှိခဲ့ကြနှင့်မျှမကအခြားပုံစံများလိုက်ဖက်ကြလျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်ကွပ်မျက်ခံရခြင်းဖြစ်သည် (အလွန်အကျွံကြီးမားသောတန်ဖိုးပုံစံ matcher နှေးကွေးစေနိုင်ပါဘူး။ မှတ်ချက်) ။ အဆိုပါ full_buffer keyword ကိုအသုံးပြုသည်ဖြစ်စေဘဲ, အမေ့လျော့ဇာတ်ကောင် (ကြားခံ) expect_out မှရေးထားလျက်ရှိ၏။

patlist keyword ကို null ဖြစ်တယ်, (ထို remove_nulls မှာထား၏မှတဆင့်) null ခွင့်ပြုနေတယ်ဆိုရင်တစ်ခုတည်းလျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်ကွပ်မျက်ခံရခြင်းဖြစ်သည် ASCII 0 င်ကိုက်ညီနေသည်။ ဒါဟာ glob သို့မဟုတ် regexp ပုံစံများကနေတဆင့် 0 င် bytes ကိုက်ညီဖို့မဖြစ်နိုင်ပါ။

ပုံစံ (သို့မဟုတ် eof သို့မဟုတ် full_buffer) ကိုက်ညီပေါ်၌မဆိုကိုက်ညီခြင်းနှင့်ယခင်ကပွို output ကိုပု variable ကို expect_out (ကြားခံ) ထဲတွင်သိမ်းဆည်းထားသည်။ 9 ဦးအထိ regexp substring ပွဲပု variable တွေကိုသိမ်းဆည်းနေကြသည် expect_out (9, string ကို) မှတဆင့် (1, string ကို) expect_out ။ အလံ 10 ကွိုး (lrange များအတွက်သင့်လျော်သောပုံစံတွင်) ပုံစံ, စနှင့်ညွှန်းကိန်းအဆုံးသတ်မတိုင်မီအသုံးပြုသည်အဆိုပါ -indices ဟာ variable တွေကိုထဲမှာသိမ်းထားတဲ့နေတယ်ဆိုရင် (start, X ကို) expect_out နှင့် X ကိုတစ်ဦးသည်အဘယ်မှာရှိ expect_out (X ကို, အဆုံး) ဂဏန်းသည်ကြားခံအတွက် substring အနေအထားမှကိုက်ညီ။ 0 တစ်ခုလုံးကိုပုံစံလိုက်ဖက်နှင့် glob ပုံစံများအဖြစ် regexp ပုံစံများများအတွက်ထုတ်လုပ်လိုက်တဲ့သောညှို့ကိုရည်ညွှန်းသည်။ ဥပမာအားဖြင့်, လုပ်ငန်းစဉ် "abcdefgh \ n" ၏ရလဒ်၏ output ကိုထုတ်လုပ်မူလျှင်:

"cd" မျှော်လင့်ထား

အောက်ပါထုတ်ပြန်ချက်များကွပ်မျက်ခံရခဲ့မယ်ဆိုရင်ကဲ့သို့ဖြစ်၏:

set ကို expect_out (0, string ကို) cd set ကို expect_out (ကြားခံ) abcd

နှင့် "efgh ပါ \ n" ဟုအဆိုပါ output ကိုကြားခံ၌ကျန်ကြွင်းသည်။ : တစ်ဖြစ်စဉ် output ကို "abbbcabkkkka \ n" ၏ရလဒ်ထုတ်လုပ်ခဲ့လျှင်

-indices -re "ခ (ခ *) ။ * (ဋ +)" မျှော်လင့်ထား

အောက်ပါထုတ်ပြန်ချက်များကွပ်မျက်ခံရခဲ့မယ်ဆိုရင်ကဲ့သို့ဖြစ်၏:

set ကို expect_out (0, start) 1 set ကို expect_out (0, အဆုံး) 10 set ကို expect_out (0, string ကို) set expect_out (1, start) bbbcabkkkk 2 set ကို expect_out (1, အဆုံး) 3 set ကို expect_out (1, string ကို) set expect_out BB (2, start) 10 set ကို expect_out (2, အဆုံး) 10 set ကို expect_out (2, string ကို) ဋ set ကို expect_out (ကြားခံ) abbbcabkkkk

နှင့် "တစ်ဦးပါ \ n" ဟုအဆိုပါ output ကိုကြားခံ၌ကျန်ကြွင်းသည်။ အဆိုပါပုံစံ "*" (နှင့် -re "။ *") လုပ်ငန်းစဉ်အနေဖြင့်မည်သည့်ပိုပြီး output ကိုဖတ်ရှုခြင်းမရှိဘဲ output ကိုကြားခံရှင်းလင်းရန်ပါလိမ့်မယ်။

ပုံမှန်အားဖြင့်ကိုက်ညီသော output ကိုရဲ့မျှော်လင့်ပြည်တွင်းရေးကြားခံအနေဖြင့်စွန့်ပစ်သည်။ ဒါက -notransfer အလံနှင့်အတူတစ်ပုံစံ prefixing နေဖြင့်တားဆီးနိုင်ပါသည်။ ဤသည်အလံစမ်းသပ်အတွက်အထူးသဖြင့်အသုံးဝင်သည် (နှင့်စမ်းသပ်နေစဉ်အတွင်းအဆင်ပြေစေရန်အတွက် "ဘဲ" ကိုအတိုကောက်နိုင်ပါတယ်) ။

အဆိုပါကိုက်ညီခြင်း output ကို (သို့မဟုတ် eof သို့မဟုတ် full_buffer) နဲ့သက်ဆိုင်တဲ့ spawn အိုင်ဒီ expect_out (spawn_id) တွင်သိမ်းဆည်းထားသည်။

အဆိုပါ -timeout အလံလက်ရှိ command ကိုအစားအချိန်ကုန် variable ကို၏တန်ဖိုးကိုအသုံးပြုပြီးတစ်အချိန်ကုန်အဖြစ်အောက်ပါတန်ဖိုးကိုသုံးစွဲဖို့မျှော်လင့်ထားကိုဖြစ်ပေါ်စေသည်။

ပုံမှန်အားဖြင့်ပုံစံများဟာလက်ရှိလုပ်ငန်းစဉ်အားထံမှ output ကိုဆန့်ကျင်လိုက်ဖက်နေကြတယ်, သို့သော် -i အလံပုအမည်ရှိ spawn_id list ကနေထွက်ရှိမဆိုအောက်ပါအချက်များကိုပုံစံများ (လာမယ့် -i အထိ) ဆန့်ကျင်ကိုက်ညီရမည်မိန့်တော်မူ၏။ အဆိုပါ spawn_id စာရင်းကိုလည်းကောင်း spawn_ids တစ်ဦးကြားနေရာလွတ်ကွဲကွာစာရင်းကိုသို့မဟုတ် spawn_ids ၏ထိုကဲ့သို့သောစာရင်းတစ်ခုကိုရည်ညွှန်းတဲ့ variable ကိုဖြစ်သင့်သည်။

ဥပမာအားဖြင့်, အောက်ကဥပမာလက်ရှိဖြစ်စဉ်ကိုမှ "ချိတ်ဆက်" သို့မဟုတ် "အလုပ်များ" စောင့် "ပျက်ကွက်" သို့မဟုတ် $ proc2 အားဖြင့်အမည်ရှိ spawn_id ကနေ "မမှန်ကန်တဲ့ password ကို" ။

; {n ကအလုပ်များ \ ထည့်လေ့မရှိ {-i $ proc2 အလုပ်များမျှော်လင့်ထား } အချိန်ကုန်ချိတ်ဆက် abort abort | "မမှန်ကန်တဲ့ password ကိုပျက်ကွက်" exp_continue} -re

ကမ္ဘာလုံးဆိုင်ရာ variable ကို any_spawn_id ၏တန်ဖိုးသည်လက်ရှိမျှော်လင့်ထား command ကိုအားလုံးကိုအခြားအ -i အလံနှင့်အတူအမည်ရှိဖြစ်ကြောင်းဆို spawn_ids မှပုံစံများကိုက်ညီစေရန်အသုံးပြုနိုင်ပါသည်။ အဘယ်သူမျှမဆက်စပ်ပုံစံ (ဆိုလိုသည်မှာအခြား -i နေဖြင့်ချက်ချင်းနောက်တော်သို့လိုက်) နဲ့တစ်ဦး -i အလံကနေ spawn_id any_spawn_id နှင့်ဆက်စပ်တူညီတဲ့မျှော်လင့်ထား command ကိုအခြားပုံစံများမှမရရှိနိုင်၏။

အဆိုပါ -i အလံကိုလည်း variable ကို spawn အိုင်ဒီများစာရင်းကိုအဘို့ကိုဖတ်ရှုသောအမှု၌ကမ္ဘာလုံးဆိုင်ရာ variable ကိုအမည်ဖြစ်နိုင်သည်။ ဒါကြောင့်ပြောင်းလဲအခါတိုင်းအဆိုပါ variable ကိုပြန်ဖတ်ဖြစ်ပါတယ်။ ဤအမိန့်ပေးကွပ်မျက်၌တည်ရှိ၏နေစဉ် I / O အရင်းအမြစ်ပြောင်းလဲနေတဲ့တစ်လမ်းပေးပါသည်။ ဤနည်းအားပေးအပ် spawn အိုင်ဒီ "သွယ်ဝိုက်" spawn အိုင်ဒီဟုခေါ်ကြသည်။

ထိုကဲ့သို့သောချိုးအဖြစ်လုပ်ဆောင်ချက်များနှင့်ပုံမှန်အတိုင်းလမ်းအတွက်ပြုမူဖို့အကြောင်းမရှိထိန်းချုပ်မှုအဆောက်အဦများ (ဆိုလိုသည်မှာအဘို့, proc) ကိုဆက်လက်။ အဆိုပါ command ကို exp_continue သူ့ဟာသူကွပ်မျက်ထက်ကပုံမှန်အားဖြင့်အလိုတခုတည်းအဖြစ်ပြန်လာဆက်လက်မျှော်လင့်ထားခွင့်ပြုပါတယ်။

ဒါဟာရှင်းလင်းပြတ်သားစွာရှောင်ရှားဘို့အသုံးဝင်သည် ကွင်း သို့မဟုတ်ထုတ်ပြန်ချက်များကိုမျှော်လင့်ထပ်ခါတလဲလဲ။ အောက်ပါဥပမာ rlogin အလိုအလျောက်ရန်အပိုင်းအစ၏အစိတ်အပိုင်းတစ်ခုဖြစ်ပါတယ်။ အဆိုပါ exp_continue အဆိုပါ rlogin စကားဝှက်များအတွက်လှုံ့ဆော်ပေးခဲ့တယ်လျှင်တစ်စက္ကန့် (ထပ် prompt ကိုရှာ) ကြေညာချက်ကိုမျှော်လင့်။ ရေးသားဖို့ရှိခြင်းကိုရှောင်

"n \ n (* ။ )" expect_user -re send_user "\ n" ပို့ပေးပါ "$ expect_out (1, string ကို) \ r" stty: "$ အိမ်ရှင်အပေါ် ($ အသုံးပြုသူများအတွက်) password ကို" {stty -echo send_user: {Password ကိုမျှော်လင့်ထား exp_continue ပဲ့တင်သံ} မမှန်ကန်ကြောင်း {send_user "မမှန်ကန်တဲ့စကားဝှက်သို့မဟုတ်အကောင့် \ n" ထွက်ပေါက်} အချိန်ကုန် {send_user ထွက်ပေါက်} eof {send_user \ "ပျက်ကွက်အိမ်ရှင်အဖြစ်လက်ခံကျင်းပကွန်နက်ရှင်: $ expect_out (ကြားခံ)" "$ အိမ်ရှင်မှ connection ကို \ n ကအချိန်ကုန်သွားပါသည်" ထွက်ပေါက်} - } $ prompt ကိုပြန်လည်

ဥပမာအားဖြင့်, အောက်ပါအပိုင်းအစအသုံးပြုသူတစ်ပြီးသားလုံးဝအလိုအလျောက်ကြောင်းတစ်ခုအပြန်အလှန်ကူညီလမ်းညွှန်ပါလိမ့်မယ်။ ဤကိစ္စတွင်ခုနှစ်, terminal ကိုကုန်ကြမ်း mode ကိုထဲသို့သွင်းထားခြင်းဖြစ်သည်။ အသုံးပြုသူပုံနှိပျ "+" အကယ်. တစ်ဦး variable ကိုအဆတိုးနေသည်။ "p" ဖိလျှင်တော်တော်များများပြန် "i" အသုံးပြုသူထိထိရောက်ရောက်ဇာတ်ညွှန်းထဲကနေထိန်းချုပ်ကွာခိုးယူ, လုပ်ငန်းစဉ်နှင့်အတူအပြန်အလှန်ပေးနိုင်ပါတယ်ဖြစ်ကောင်းတချို့လမ်းထဲမှာပြီးမှရန်, လုပ်ငန်းစဉ်မှစေလွှတ်လျက်, နေကြပါတယ်။ တစ်ခုချင်းစီကိုအမှု၌, exp_continue လက်ရှိလက်ရှိအရေးယူဆောင်ရွက်မှုကွပ်မျက်ပြီးနောက်ပုံစံကိုက်ညီခြင်းဆက်လက်မျှော်လင့်ထားခွင့်ပြုပါတယ်။

stty ကုန်ကြမ်း -echo expect_after {-i $ user_spawn_id "p" { "\ r \ r \ r" ပေးပို့; exp_continue} "+" {incr foo; exp_continue} "ဈ" {အပြန်အလှန်; exp_continue}} ထွက်ပေါက် "ဆေးလိပ်ဖြတ်"

ပုံမှန်အားဖြင့်, exp_continue ဟာအချိန်ကုန် timer နေရာမှာ reset လုပ်တယ်။ exp_continue အဆိုပါ -continue_timer အလံနှင့်ခေါ်လျှင်အတွတ် timer, ပြန်လည်စတင်မပေးပါ။

expect_after [expect_args]
နှစ်ဦးစလုံးထံမှပုံစံများကိုမျှော်လင့်ခြင်းနှင့် expect_after ကိုက်ညီနိုင်လျှင်, ယင်းကိုမျှော်လင့်ပုံစံကိုအသုံးပြုကြောင်းမှတပါး expect_before မှတူညီအလုပ်လုပ်ပါတယ်။ ပိုမိုသိရှိလိုပါကများအတွက် expect_before command ကိုကြည့်ရှုပါ။

expect_background [expect_args]
မျှော်လင့်ထားအဖြစ်သို့သော်သူကချက်ချင်းပြန်လာ, တူညီတဲ့အငြင်းပွားမှုများကြာပါသည်။ အသစ်က input ကိုရောက်ရှိအခါတိုင်းပုံစံများကိုစမ်းသပ်နေကြသည်။ အဆိုပါပုံစံအချိန်ကုန်နှင့် default အ expect_background မှအနတ္တဖြစ်ကြပြီးတိတ်တဆိတ်စွန့်ပစ်လျက်ရှိသည်။ ဒီလိုမှမဟုတ်ရင်, ထို expect_background command ကိုမမျှော်လင့်ထားပဲနဲ့တူ expect_before နှင့် expect_after ပုံစံများကိုအသုံးပြုသည်။

expect_background လုပ်ရပ်များအကဲဖြတ်ခံရသောအခါ, တူညီတဲ့ spawn အိုင်ဒီများအတွက်နောက်ခံအပြောင်းအလဲနဲ့ပိတ်ဆို့ထားပါသည်။ action ကိုပြီးဆုံးသည့်အခါနောက်ခံအပြောင်းအလဲနဲ့ပြန်ဖွင့်သည်။ နောက်ခံအပြောင်းအလဲနဲ့ပိတ်ဆို့နေစဉ်က (foreground) လုပ်ဖို့ဖြစ်နိုင်အတူတူ spawn အိုင်ဒီအပေါ်မျှော်လင့်ထား။

ဒါဟာတစ်ဦး expect_background ပြန်ဖွင့်စဉ်မျှော်လင့်ထားကာ execute ဖို့မဖြစ်နိုင်ပါ။ တစ်ဦးအထူးသဖြင့် spawn အိုင်ဒီများအတွက် expect_background အတူတူ spawn အိုင်ဒီနှင့်အတူသစ်တစ်ခု expect_background ကြေညာခြင်းဖြင့်ဖျက်ပစ်နေပါတယ်။ အဘယ်သူမျှမပုံစံနှင့်အတူ expect_background ကြေညာနောက်ခံပုံစံများကိုက်ညီနိုင်စွမ်းထံမှပေးထားသော spawn အိုင်ဒီဖယ်ရှားပေးပါသည်။

expect_before [expect_args]
မျှော်လင့်ထားအဖြစ်သို့သော်သူကချက်ချင်းပြန်လာ, တူညီတဲ့အငြင်းပွားမှုများကြာပါသည်။ တူညီသော spawn အိုင်ဒီနှင့်အတူလတ်တလော expect_before ထံမှ pattern-action ကိုအားလုံးလုံးလုံးလြားလြားမဆိုအောက်ပါမှဆက်ပြောသည်နေကြသည်ပညတ်တော်တို့ကိုမျှော်လင့်ထား။ တစ်ပုံစံကိုက်ညီပါလျှင်ကမျှော်လင့်ထား command ကိုသူ့ဟာသူအတွက်သတ်မှတ်ထားသောခဲ့, နှင့်ဆက်စပ်ခန္ဓာကိုယ်မျှော်လင့်ထား command ကို၏အခြေအနေတွင်ကွပ်မျက်ခံရလျှင်ကြောင့်ကုသနေပါတယ်။ နှစ်ဦးစလုံးထံမှပုံစံများ expect_before နှင့်မျှော်လင့်ထားခဲ့လျှင်ကိုက်ညီနိုငျသညျ, ထို expect_before ပုံစံကိုအသုံးပြုသည်။

အဘယ်သူမျှမပုံစံသတ်မှတ်ထားသောလျှင်, spawn အိုင်ဒီဆိုပုံစံများများအတွက် check လုပ်ထားသည်မဟုတ်။

တစ်ဦး -i အလံကိုပယ်ဖျက်မဟုတ်လျှင်, expect_before ပုံစံများ (၎င်း၏ပုံစံကိုက်ညီနေသည်မဟုတ်သည့်အခါ) တွင် expect_before command ကိုကွပ်မျက်ခံခဲ့ရပါတယ်သောအချိန်တွင်သတ်မှတ်ထားတဲ့ spawn အိုင်ဒီဆန့်ကျင်ကိုက်ညီမှုမရှိပါ။

အဆိုပါ -info အလံအကြောင်းတရားများကြောင့်ကိုက်ညီတံ့သောအရာကိုပုံစံများလက်ရှိသတ်မှတ်ချက်များကိုပြန်သွားဖို့ expect_before ။ ပုံမှန်အားဖြင့်ကလက်ရှိ spawn အိုင်ဒီအပေါ်သတင်းပေးပို့ထားပါတယ်။ တစ်ခုက optional ကို spawn အိုင်ဒီသတ်မှတ်ချက်ကြောင့် spawn အိုင်ဒီအပေါ်သတင်းအချက်အလက်များအတွက်ပေးထားနိုင်ပါသည်။ ဥပမာ

expect_before -info -i $ proc

အများဆုံးတဦးတည်း spawn အိုင်ဒီသတ်မှတ်ချက်မှာပေးထားနိုင်ပါသည်။ သွယ်ဝိုက်သတ်မှတ်ချက်များအနေဖြင့်သာလာသည်ဟုတိုက်ရိုက် spawn အိုင်ဒီဖိနှိပ် -indirect အလံ။

အစား spawn အိုင်ဒီသတ်မှတ်ချက်, အလံ၏ "ကိုအကုန်အ" အားလုံး spawn အိုင်ဒီအပေါ်သတင်းပို့ရန် "-info" ဖြစ်ပေါ်စေပါလိမ့်မယ်။

အဆိုပါ -info အလံ၏ output expect_before ဖို့အငြင်းအခုံအဖြစ်ပြန်သုံးနိုင်ပါသည်။

expect_tty [expect_args]
တူသောမျှော်လင့်ထားပေမယ့် (အသုံးပြုသူများထံမှဆိုလိုသည်မှာခလုတျကှကျ) dev / TTY / ထံမှဇာတ်ကောင်ဖတ်ဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့်စာဖတ်ခြင်းချက်ပြုတ် mode မှာဖျော်ဖြေနေသည်။ ထို့ကြောင့်လိုင်းများသူတို့ကိုကြည့်ဖို့မျှော်လင့်ထားဘို့အလို့ငှာပြန်လည်နှင့်အတူအဆုံးသတ်ရပေမည်။ ဤ (အောက်ဖော်ပြပါ stty command ကိုကြည့်ပါ) stty မှတဆင့်ပြောင်းလဲသွားနိုင်ပါသည်။

expect_user [expect_args]
တူသောမျှော်လင့်ထားပေမယ့် stdin ကနေဇာတ်ကောင် (အသုံးပြုသူများထံမှဆိုလိုသည်မှာခလုတျကှကျ) ဖတ်ဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့်စာဖတ်ခြင်းချက်ပြုတ် mode မှာဖျော်ဖြေနေသည်။ ထို့ကြောင့်လိုင်းများသူတို့ကိုကြည့်ဖို့မျှော်လင့်ထားဘို့အလို့ငှာပြန်လည်နှင့်အတူအဆုံးသတ်ရပေမည်။ ဤ (အောက်ဖော်ပြပါ stty command ကိုကြည့်ပါ) stty မှတဆင့်ပြောင်းလဲသွားနိုင်ပါသည်။

အမဲချိတ်
အသစ်တစ်ခုကိုဖန်တီးပေး လုပ်ငန်းစဉ်သည် ။ အသစ် ဖြစ်စဉ်ကို လက်ရှိမျှော်လင့်တစ်ခုအတိအကျကိုမိတ္တူဖြစ်ပါတယ် ဖြစ်စဉ်ကို ။ အောင်မြင်မှုတွင်, လမ်းဆုံလမ်းခွအသစ်က (ကလေးက) အား 0 င်ပြန်လာ ခြင်းလုပ်ငန်းစဉ် များနှင့်ပြန်လည်ရောက်ရှိ ဖြစ်စဉ်ကို သူငယ်၏ ID ကို process ကို မိဘမှ ဖြစ်စဉ်ကို ။ ကျရှုံးခြင်းတွင် (လျော့ပါးသွားမည်ဖြစ်သလိုကြောင့်ဥပမာအရင်းအမြစ်များမရှိခြင်း, လဲလှယ်ရေးအစီအစဉ်အာကာသ, မှတ်ဉာဏ်မှ), လမ်းဆုံလမ်းခွတွင်ပြန် -1 မိဘမှ ဖြစ်စဉ်ကို , နှင့်မျှမကလေးသည် ဖြစ်စဉ်ကို ဖန်တီးသည်။

ချိတ်မယ့်မူရင်းကဲ့သို့ထွက်ပေါက် command ကိုမှတဆင့်ထွက်ပေါက် process လုပ်တယ် ဖြစ်စဉ်ကို ။ ဖြာဖြစ်စဉ်များဃဖိုင်များရေးသားဖို့ခွင့်ပြုခဲ့ရသည်။ သင်ဖြစ်စဉ်များအများစုအတွက်ဒီဘာဂင်သို့မဟုတ်သစ်ထုတ်လုပ်ရေးကို disable ဘူးဆိုရငျ, ရလဒ်ရှုပ်ထွေးစေနိုင်ပါတယ်။

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

[string1 body1] အပြန်အလှန် ... [stringn [bodyn]]
လက်ရှိထိန်းချုပ်ပေးသည် ဖြစ်စဉ်ကို ခလုတျကှကျလက်ရှိရှိရာသို့စေလွှတ်နိုင်အောင်, အသုံးပြုသူမှ ဖြစ်စဉ်ကို များနှင့်လက်ရှိ၏ stdout နှင့် stderr ဖြစ်စဉ်ကို ပြန်ရောက်နေကြသည်။

string-ခန္ဓာကိုယ်အားလုံးသက်ဆိုင်တဲ့ string ကိုဝင်ကြ၏သောအခါခန္ဓာကိုယ်ကွပ်မျက်ခံရသောအမှု၌အငြင်းပွားမှုများ, အဖြစ်သတ်မှတ်ထားသောနိုင်ပါသည်။ (ပုံမှန်အားဖြင့် string ကိုလက်ရှိထံသို့စေလွှတ်သည်မဟုတ် ခြင်းလုပ်ငန်းစဉ် ။ ) အဆိုပါစကားပြန် command ကိုယူဆသည်နောက်ဆုံးခန္ဓာကိုယ်ပျောက်ဆုံးလျှင်။

တစ်ခုလုံးကို interactive ကြေညာချက်ဖို့ဆင်ခြေတစ်ခုထက် ပို. လိုင်းလိုအပ်ခဲ့လျှင်တစ်ဘယ်ဘက်မျဉ်းစောင်းစီ line ကိုရပ်စဲရှောင်ရှားရန်သကဲ့သို့, လူအပေါင်းတို့သည်ငြင်းခုံတစျခုသို့ "braced" နိုင်ပါသည်။ ဒီတစ်ခုကိစ္စတွင်ခုနှစ်, ပုံမှန်အတိုင်း TCL အစားထိုးသည့်မသန်စွမ်းပဲကြားမှပေါ်ပေါက်လိမ့်မယ်။

^ Z ကိုနှိပ်သောအခါမျှော်လင့်ဆိုင်းငံ့ထား: ဥပမာ, အောက်ပါ command ကိုပြေးသတ်မှတ်ထားတဲ့အောက်ပါ string ကို-ခန္ဓာကိုယ်အားလုံးနှင့်အတူအပြန်အလှန်။ ^ တစ်ဦးကဖိသောအခါ (ထို -reset အလံ terminal ကို Modes သာပြုပြင်။ ), သုံးစွဲသူ "သင်တစ်ထိန်းချုပ်မှု-တစ်ဦးကရိုက်" နှင့်ရှုမြင် ခြင်းလုပ်ငန်းစဉ် တစ် ^ တစ်ဦးကိုစေလွှတ်နေပါတယ်။ $ ဖိသောအခါအသုံးပြုသူရက်စွဲမြင်သည်။ ^ C ကိုနှိပ်သောအခါထွက်ပေါက်မျှော်လင့်။ "foo" ထဲသို့ဝင်လျှင်, အသုံးပြုသူ "ဘား" မြင်သည်။ ~~ ဖိဖြစ်ပါတယ်သောအခါ, မျှော်လင့်စကားပြန် interactive ပြေး။

CTRLZ \ 032 interactive set {-reset $ CTRLZ {အမှုဆောင်အရာရှိ "သင်တစ်ထိန်းချုပ်မှု-တစ်ဦးက \ n ကရိုက်" send_user {001 \ [PID]} -STOP ကိုသတ်; } ~~ 003 ထွက်ပေါက် foo {send_user "ဘား"} \} "။ [] နာရီစက္ကန့် [နာရီပုံစံ] အဆိုပါနေ့စွဲဖြစ်ပါတယ်" "\ 001"} $ {send_user ပေးပို့

string ကို-ခန္ဓာကိုယ်အားလုံးအတွက်, ညှို့သူတို့ဆင်ခြေအဖြစ်စာရင်းဝင်နေသောနိုင်ရန်အတွက်လိုက်ဖက်နေကြသည်။ တစ်စိတ်တစ်ပိုင်းပွဲစဉ်ဟာလက်ရှိထံသို့စေလွှတ်ကြသည်မဟုတ်ကြောင်း strings ဖြစ်စဉ်ကို ကျန်ရှိသောလာမယ့်များ၏မျှော်လင့်ပါတယ်။ ဇာတ်ကောင်ထို့နောက်မရှိတော့ဖြစ်နိုင်သည်ကိုက်ညီမှုရှိနိုငျကွောငျးထိုကဲ့သို့သောထဲသို့ဝင်နေတယ်ဆိုရင်, string ကိုသာအစိတ်အပိုင်းကိုစလှေတျပါလိမ့်မည် သည့်လုပ်ငန်းစဉ် ဖြစ်နိုင်သည်အခြားပွဲစဉ်ကိုစတင်မပေးနိုငျကွောငျး။ ပွဲစဉ်ဖြစ်ရန်ကြိုးစားနေသောမူရင်းစာကြောင်းနောက်ဆုံးမှာပျက်ကွက်လျှင်ထို့ကြောင့်တစ်စိတ်တစ်ပိုင်းပွဲ၏ substrings ဖြစ်ကြောင်းညှို့, အကြာတွင်ကိုက်ညီနိုင်ပါတယ်။

ပုံမှန်အားဖြင့်, string ကိုကိုက်ညီခြင်းမရှိ, အတူအတိအကျဖြစ်ပါတယ် ရိုင်းကတ်များ ။ အဆိုပါ -ex အလံမဟုတ်ရင်ဒါလုပ်နေတာကနေ interactive အလံကိုက်ညီစေခြင်းငှါပုံစံများကာကွယ်ပေးဖို့အသုံးပြုစေခြင်းငှါ (ဆနျ့ကငျြဘမှာ command ကို default အနေဖြင့် glob-စတိုင်ပုံစံများကိုအသုံးပြုပါတယ်။ မျှော်လင့်ထား) ။ "-" တစ်ဦးနှင့်အတူစတင်မဆိုပုံစံဤနည်းဖြင့်ကာကွယ်ထားသင့်ပါတယ်။ (အားလုံးညှို့နှင့်အတူစတင် "-" အနာဂတ်ရွေးချယ်စရာအဘို့သိုထားကြသည်။ )

အဆိုပါ -re အလံတစ် regexp-စတိုင်ပုံစံအဖြစ်အဓိပ္ပာယ်ကောက်ယူခံရဖို့ string ကိုတွန်းအားပေးသည်။ ဤကိစ္စတွင်ခုနှစ်, ကိုက်ညီ substrings အလားတူလမ်းကိုဖို့ variable ကို interact_out ထဲမှာသိမ်းထားတဲ့နေသော variable ကို expect_out အတွက်၎င်း၏ output ကိုသိုလှောင်မျှော်လင့်ထား။ အဆိုပါ -indices အလံအလားတူထောက်ခံသည်။

အဆိုပါပုံစံ eof အဆုံး-of file ကိုအပေါ်သို့ကွပ်မျက်ခံရကြောင်းလုပ်ဆောင်ချက်တစ်ခုမိတ်ဆက်။ တစ်ဦးကသီးခြား eof ပုံစံကိုလည်း output ကိုရေးသားနေချိန်တွင်တစ်ဦး eof တွေ့ရှိလျှင်ကြောင့်လိုက်ဖက်သောအမှု၌ယင်း -output အလံအတိုင်းလိုက်နာပေမည်။ ကြောင်း interactive ရိုးရှင်းစွာဆို EOF အပေါ်သို့ပြန်လည်ရောက်ရှိဒါ default အ eof အရေးယူ "ပြန်လာ" ဖြစ်ပါတယ်။

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

ဥပမာအားဖြင့်, အောက်ပါကြေညာချက်တစ်နာရီအဘို့အဘယ်အရာကိုမျှရိုက်ပေမယ့်သူကိုနေဆဲမကြာခဏစနစ်ကမက်ဆေ့ခ်ျကိုရကြပြီမဟုတ်သူကိုအသုံးပြုသူများသည် autologout ဖို့အသုံးပြုနိုင်:

အပြန်အလှန် -input $ user_spawn_id အချိန်ကုန် 3600 ပြန်လာ -output \ $ spawn_id

ပုံစံ keyword ကို null ဖြစ်တယ်, (ထို remove_nulls မှာထား၏မှတဆင့်) null ခွင့်ပြုနေတယ်ဆိုရင်တစ်ခုတည်း ASCII 0 င်ကိုက်ညီလျှင်, သက်ဆိုင်ရာခန္ဓာကိုယ်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ ဒါဟာ glob သို့မဟုတ် regexp ပုံစံများကနေတဆင့် 0 င် bytes ကိုက်ညီဖို့မဖြစ်နိုင်ပါ။

ပုံစံ (သို့မဟုတ် eof) လိုက်ဖက်သော spawn_id ဟုသတ်မှတ်ခံရဖို့ variable ကို interact_out (spawn_id) ကိုဖြစ်ပေါ်စေသည် -iwrite အလံနှင့်အတူတစ်ပုံစံ Prefacing ။

ကဲ့သို့သောလုပ်ဆောင်ချက်များ ချိုး နှင့် ဆက်လက် ပုံမှန်အတိုင်းလမ်းအတွက်ပြုမူဖို့အကြောင်းမရှိထိန်းချုပ်မှုအဆောက်အဦများ (ဆိုလိုသည်မှာအဘို့, proc) ။ သို့သော် inter_return အကြောင်းတရားများသည်၎င်း၏ခေါ်ဆိုမှုအတွက်ပြန်လာစေရန်အပြန်အလှန်အနေဖြင့်အကြောင်းတရားများ၎င်း၏ခေါ်ဆိုသူ၏ဖို့အတွက်ပြန်သွားဖို့အပြန်အလှန်ပြန်သွားပါ။ ဥပမာအားဖြင့်, ထို့နောက်အရေးယူ inter_return ကွပ်မျက်ခံရရာ interactive ခေါ် "proc foo" သည်မှန်လျှင်, proc foo ပြန်လာလိမ့်မယ်။ (ဤ interactive ဖုန်းခေါ်ဆိုမှု interactive inter_return ဟာ interactive ယင်း၏ခေါ်ဆိုသူ၏ပြန်လာစေပါလိမ့်မယ်နေချိန်မှာပြန်လာခြင်း, interactive ဆက်လက်ဖြစ်ပေါ်စေပါလိမ့်မယ်စာရိုက် interpreter လျှင်သည်ဟုဆိုလိုသည်။ )

အားလုံးဇာတ်ကောင်လက်ရှိကူးမြောက်စေခြင်းငှါဒါ interactive စဉ်အတွင်းကုန်ကြမ်း mode ကိုအသုံးပြုသည် လုပ်ငန်းစဉ်အား ။ လက်ရှိ အကယ်. လုပ်ငန်းစဉ်သည် အလုပ်ထိန်းချုပ်မှုအချက်ပြကိုဖမ်းပါဘူး (default အ ^ Z ကိုအားဖြင့်) တစ်မှတ်တိုင် signal ကိုစလှေတျတျောလျှင်, ရပ်တန့်ပါလိမ့်မယ်။ ကပြန်လည်စတင်ရန်, (ထိုကဲ့သို့သော "-CONT သတ်ပစ်" ကကဲ့သို့) တစ်ဦးကိုဆက်လက် signal ကိုပေးပို့ပါ။ သင်အမှန်တကယ်ထိုကဲ့သို့သောတစ် SIGSTOP ပေးပို့လိုပါက လုပ်ငန်းစဉ်သည် (^ Z ကိုအားဖြင့်), csh ပထမဦးဆုံး spawning, ပြီးတော့သင့်ရဲ့ program ကို run နေစဉ်းစားပါ။ အခြားတစ်ဖက်တွင်, သငျသညျကိုယျတိုငျကမျှော်လင့်နေတဲ့ SIGSTOP ပို့ချင်လျှင်, (ဖြစ်ကောင်းအနေနဲ့ထွက်ပေါက်ဇာတ်ကောင်ကို အသုံးပြု. ) ပထမဦးဆုံးခေါ်ဆိုခစကားပြန်, ပြီးတော့ ^ Z ကိုနှိပ်ပါ။

string-ခန္ဓာကိုယ်အားလုံးတို့သည်စကားပြန်ရိုက်ထည့်ပါနှင့် Interactive command များကို execute မှရှိခြင်းကိုရှောင်ရှားများအတွက်အတိုကောက်အဖြစ်အသုံးပြုနိုင်ပါသည်။ တစ်ဦး string ကို-ခန္ဓာကိုယ် pair တစုံ၏ကိုယ်ကိုကွပ်မျက်ခံနေစဉ်ယခင် terminal ကို mode ကိုအသုံးပြုသည်။

မြန်နှုန်းအဘို့, လုပ်ရပ်တွေကို default အနေဖြင့်ကုန်ကြမ်း mode မှာ execute ။ အဆိုပါ -reset အလံ interactive (လျော့ပါးသွားမည်ဖြစ်သလို, ချက်ပြုတ် mode ကို) ကွပ်မျက်ခံရမီကရှိခဲ့သည့် mode ကို terminal ကို reset လုပ်တယ်။ အဆိုပါ mode ကိုပြောင်းခံရသောအခါဇာတ်ကောင်ဝင်သောမှတ်ချက် (အချို့စနစ်များပေါ်တွင် terminal ကိုယာဉ်မောင်းတစ်ဦးကံဆိုးအင်္ဂါရပ်) ပျောက်ဆုံးသွားနိုင်ပါသည်။ သင့်ရဲ့အရေးယူဆောင်ရွက်မှုချက်ပြုတ် mode မှာလည်ပတ်နေပေါ်မူတည်ပါလျှင် -reset သုံးစွဲဖို့တစ်ခုတည်းသောအကြောင်းပြချက်ဖြစ်ပါတယ်။

အဆိုပါ -echo အလံပြန်အောက်ပါပုံစံကိုက်ညီသောဇာတ်ကောင်ပို့ပေး သည့်လုပ်ငန်းစဉ် တစ်ခုချင်းစီကိုဇာတ်ကောင်ကိုဖတ်ရှုနေသည်အဖြစ်သူတို့ကိုထုတ်ပေးသော။ အသုံးပြုသူတစ်စိတ်တစ်ပိုင်းရိုက်ပုံစံများထံမှတုံ့ပြန်ချက်ကိုကြည့်ပါရန်လိုအပ်ပါသည်သောအခါဤအသုံးဝင်သောဖြစ်နိုင်သည်။

တစ်ပုံစံသံယောင်ပေမယ့်နောက်ဆုံးမှာကိုက်ညီဖို့ပျက်ကွက်ခံရလျှင်, ဇာတ်ကောင်ဟာမွေးထုတ်ဖို့စေလွှတ် သည့်လုပ်ငန်းစဉ် ။ အဆိုပါမွေးထုတ် အကယ်. လုပ်ငန်းစဉ်သည် ထို့နောက်သူတို့ကိုကိုပဲ့, အသုံးပြုသူနှစ်ကြိမ်ဇာတ်ကောင်ကိုမြင်ရပါလိမ့်မယ်။ -echo user ကပုံစံဖြည့်စွက်မမဖြစ်နိုင်ရှိရာအခြေအနေများတွင်ဖြစ်ကောင်းသာသင့်လျော်သည်။ ဥပမာအားဖြင့်, အောက်ပါကောက်နုတ်ချက်, rftp ကနေအသုံးပြုသူ, get ထား, ဒါမှမဟုတ်တဲ့ request ကိုလက်ရှိ directory ကိုစာရင်းပြုစုရန်, ~ ဂရမ် ~ p, ဒါမှမဟုတ် ~ ဌရိုက်ထည့်ပါသတိပေးခံရသည်အဘယ်မှာရှိတဲ့ request ကို-ftp ဇာတ်ညွှန်းဖြစ်ပါသည်။ ဤရွေ့ကား, အသုံးပြုသူရိုက်ထည့်ဖို့မဖြစ်နိုင်ဖြစ်ပါသည် ~ အရာအားလုံးထက်အားဖြင့်နောက်တော်သို့လိုက်ကြောင်း, ဒါကြောင့်ဝေးပုံမှန် ftp ပညတ်တော်တို့ကိုထံမှများမှာမှားယွင်းစွာ မှလွဲ. မည်သည့်ကိစ္စရပ်အတွက်သူတို့ဖြစ်ကောင်းရုံဘာပဲဖြစ်ဖြစ်ရလဒ်လျစ်လျူရှုပါလိမ့်မယ်။

အပြန်အလှန် {-echo ~ g နဲ့ {getcurdirectory 1} -echo ~ ဌ {getcurdirectory 0} -echo ~ p {putcurdirectory}}

အဆိုပါ -nobuffer အလံက output မှအပေါ်ကိုအောက်ပါပုံစံကိုက်ညီသောဇာတ်ကောင်ပို့ပေး ဖြစ်စဉ်ကို ဇာတ်ကောင်ကိုဖတ်နေကြတယ်အဖြစ်။

သငျသညျ program တစ်ခုပါစေရန်ဆန္ဒရှိသောအခါဤအသုံးဝင်သည် echo ပုံစံပြန်။ ဥပမာအားဖြင့်, အောက်ပါပုဂ္ဂိုလ်တစ်ဦး (က Hayes-စတိုင် modem) ခေါ်ဆိုသည်အဘယ်မှာရှိစောင့်ကြည့်ဖို့အသုံးပြုစေခြင်းငှါ။ တစ်ခုချင်းစီကိုအချိန် "atd" ဟုအဆိုပါ script ကိုလိုင်း၏ကျန်တွင်းသို့မြင်ကြခြင်းဖြစ်သည်။

proc lognumber {} {အပြန်အလှန် -nobuffer -re "(။ *) \ r" ပြန်လာ $ log ကိုထည့်လေ့မရှိ "[နာရီ format နဲ့ [နာရီစက္ကန့်]]: ခေါ်ဆို $ interact_out (1, string ကို)"} -nobuffer "atd" lognumber အပြန်အလှန်

interactive စဉ်အတွင်း log_user ၏ယခင်အသုံးပြုမှုကိုလျစ်လျူရှုနေပါတယ်။ ဒါကြောင့်အသုံးပြုသူဆင်ကန်းတောတိုးအပြန်အလှန်ရန်ဆန္ဒရှိပါဘူးယူဆနေသည်ကတည်းကအထူးသဖြင့်, interactive (Standard output ကိုစလှေတျ) logged ခံရဖို့က၎င်း၏ output ကိုအတင်းပါလိမ့်မယ်။

အဆိုပါ -O အလံမဆိုအောက်ပါသော့ချက်-ခန္ဓာကိုယ်အားလုံးလက်ရှိ၏ output ကိုအသုံးချခံရဖို့ကိုဖြစ်ပေါ်စေသည် ဖြစ်စဉ်ကို ။ ဤသည်နှင့်ဆက်ဆံရာတွင်တဲ့အခါမှာဥပမာ, အသုံးဝင်သောနိုင်ပါတယ် ကောင်းကင်ဗိုလ်ခြေအရှင် တစ်ဦး telnet session တစ်ခုအတွင်းမှာမလိုချင်တဲ့ဇာတ်ကောင်ပေးပို့ကြောင်း။

ပုံမှန်အားဖြင့်, interactive အသုံးပြုသူ stdin ရေးသားခြင်းနှင့်မျှော်လင့်၏ stdout ဖတ်နေခံရဖို့မျှော်လင့် ဖြစ်စဉ်ကို သူ့ဟာသူ။ ( "အသုံးပြုသူ" များအတွက်) အဆိုပါ -u အလံအဖြစ်အသုံးပြုသူများအတွက်ကြည့်အပြန်အလှန်စေသည် ဖြစ်စဉ်ကို (ကမွေးထုတ်အိုင်ဒီရှိရမည်ဖြစ်သော) က၎င်း၏အငြင်းအခုံများကအမည်ရှိသော။

ဤသည်နှစ်ခုမသက်ဆိုင်တဲ့လုပ်ငန်းစဉ်အနေနဲ့ရှင်းလင်းပြတ်သားစွာကွင်းဆက်မသုံးဘဲအတူတကွပူးပေါင်းခံရဖို့ခွင့်ပြုပါတယ်။ ဒီဘာဂင်အတွက်ကူညီနိုင်ရန်, ရောဂါရှာဖွေရေးအမြဲ (အချို့သောသစ်ထုတ်လုပ်ရေးအတွက်သို့မဟုတ် stdout နှင့်သတင်းအချက်အလက် debugging) stderr ကိုသွားမျှော်လင့်။ တူညီသောအကြောင်းပြချက်အဘို့, စကားပြန် command ကို stdin ထံမှ interactive ဖတ်ပါလိမ့်မယ်။

ဥပမာအားဖြင့်, အောက်ပါအပိုင်းအစတစ်ဦးရဲ့ login ဖန်တီး ဖြစ်စဉ်ကို ။ ထိုအခါကအသုံးပြုသူ (ပြမဟုတ်) dials နှင့်နောက်ဆုံးတော့နှစ်ခုအတူတကွချိတ်ဆက်။ သင်တန်း၏, မည်သည့် လုပ်ငန်းစဉ်ကို ရဲ့ login များအတွက်အစားထိုးနိုင်ပါသည်။ တစ်ဦးကအခွံ, ဥပမာ, အသုံးပြုသူအကောင့်တစ်ခုနှင့် password ထောက်ပံ့မပါဘဲလုပ်ကိုင်ဖို့ခွင့်ပြုလိမ့်မယ်။

spawn ရဲ့ login အစုံရဲ့ login $ spawn_id spawn အစွန်အဖျား modem # ဖုန်းခေါ်ဆိုမှုပြန်အသုံးပြုသူ # ထွက် -u $ ရဲ့ login အပြန်အလှန် login မှအသုံးပြုသူချိတ်ဆက်

မျိုးစုံဖြစ်စဉ်များမှ output ကိုပေးပို့ဖို့တစ် -output အလံအားဖြင့် prefaced တစ်ဦးချင်းစီ spawn အိုင်ဒီစာရင်းကိုစာရင်းပြုစု။ တစ်ဘို့ input အုပ်စုတစ်စု output ကို spawn အိုင်ဒီတစ် -input အလံအားဖြင့် prefaced တစ် spawn အိုင်ဒီစာရင်းကဆုံးဖြတ်လိမ့်မည်။ အားလုံးအောက်ပါအလံနှင့် (။ -input နှင့် -output နှစ်ဦးစလုံးကြောင့် any_spawn_id interactive အတွက်အဓိပ္ပါယ်ရှိသောမဟုတ်ပါဘူး မှလွဲ. သည်မျှော်လင့်ထား command ကိုအတွက် -i အလံကဲ့သို့တူညီသောပုံစံအတွက်စာရင်းယူစေခြင်းငှါ) ညှို့ (သို့မဟုတ်ပုံစံများ) အခြားအထိဤ input ကိုလျှောက်ထား - input ကိုအလံပုံပေါ်ပါတယ်။ အဘယ်သူမျှမ -input ပုံပေါ်နေလျှင်, -output "-input $ user_spawn_id -output" ဆိုလို။ တဦးတည်း -input သတ်မှတ်ထားသောလျှင် (အလားတူပင် -input ရှိသည်မဟုတ်ကြဘူးကြောင်းပုံစံများနှင့်အတူ။ ), က $ user_spawn_id ပြောင်းလဲသတ်မှတ်လိုက်သည်။ တစ်စက္ကန့် -input သတ်မှတ်ထားသောသည်ဆိုပါက $ spawn_id ပြောင်းလဲသတ်မှတ်လိုက်သည်။ အပိုဆောင်း -input အလံသတ်မှတ်ထားသောနိုင်ပါသည်။

အဆိုပါနှစ်ဦးကိုအဓိပ္ပာယ်သက်ရောက်သော input ကို (ပြောင်းပြန်အတွက်) $ spawn_id နှင့် $ user_spawn_id အဖြစ်သတ်မှတ်ထားသောမိမိတို့၏အကျိုးရလဒ်များရှိခြင်းဖို့ default အ process လုပ်တယ်။ တစ်ဦး -input အလံမျှမ -output အလံနှင့်အတူပေါ်လာသောလြှငျ, နေဇာတ်ကောင် ဖြစ်စဉ်ကို စွန့်ပစ်လျက်ရှိသည်။

အဘယ်သူမျှမကအခြား -input သို့မဟုတ် -output အလံအသုံးပြုကြသည်အခါ -i အလံလက်ရှိ spawn_id များအတွက်အစားထိုးမိတ်ဆက်။ တစ်ဦးက -i အလံတစ် -O အလံဆိုလို။

ဒါဟာသွယ်ဝိုက် spawn အိုင်ဒီကို အသုံးပြု. နှင့်အတူအပြန်အလှန်လျက်ရှိသည်သောဖြစ်စဉ်များကိုပြောင်းလဲဖြစ်နိုင်ပါတယ်။ (သွယ်ဝိုက် spawn အိုင်ဒီဟာမျှော်လင့်ထား command ကိုပေါ်အပိုင်းတှငျဖျောပွထားကြသည်။ ) သွယ်ဝိုက် spawn အိုင်ဒီအဆိုပါ -i, -u, -input, ဒါမှမဟုတ် -output အလံနှင့်အတူသတ်မှတ်ထားသောနိုင်ပါသည်။

စကားပြန် [args]
အသုံးပြုသူ interactive မျှော်လင့်ခြင်းနှင့် TCL ပညတ်တော်မူ၏များအတွက်သတိပေးခံရခံရဖို့ကိုဖြစ်ပေါ်စေသည်။ တစ်ဦးချင်းစီက command ၏ရလဒ်ပုံနှိပ်ဖြစ်ပါတယ်။

ထိုကဲ့သို့သောချိုးအဖြစ်လုပ်ဆောင်ချက်များနှင့်ပုံမှန်အတိုင်းလမ်းအတွက်ပြုမူဖို့အကြောင်းမရှိထိန်းချုပ်မှုအဆောက်အဦများ (ဆိုလိုသည်မှာအဘို့, proc) ကိုဆက်လက်။ inter_return ယင်း၏ခေါ်ဆိုမှုအတွက်ပြန်လာစေစကားပြန်ကိုဖြစ်ပေါ်စေသည်စဉ်သို့သော်အကြောင်းတရားများသည်၎င်း၏ခေါ်ဆိုသူ၏ဖို့အတွက်ပြန်သွားဖို့စကားပြန်ပြန်သွားပါ။ ဥပမာအားဖြင့်, ထို့နောက်အရေးယူ inter_return ကွပ်မျက်ခံရရာစကားပြန်ခေါ် "proc foo" သည်မှန်လျှင်, proc foo ပြန်လာလိမ့်မယ်။ အခြားမည်သည့် command ကိုအကြောင်းတရားများအသစ်သောပညတ်တော်တို့ကိုအဘို့သတိပေးဆက်လက် interpreter

ပုံမှန်အားဖြင့်, အ prompt ကိုနှစ်ခုကိန်းပါရှိသည်။ ပထမဦးဆုံးအ integer ဖြစ်တဲ့အတွက်ဆန်းစစ်သုံးသပ်ခြင်း stack (ဆိုလိုသည်မှာ Tcl_Eval ဟုခေါ်တွင်ခဲ့ပြီးမည်မျှကြိမ်) ၏အတိမ်အနက်ကိုဖော်ပြသည်။ ဒုတိယ integer ဖြစ်တဲ့အတွက်အဆိုပါ TCL သမိုင်းအထောက်အထားဖြစ်ပါသည်။ အဆိုပါ prompt ကိုအဘယ်သူ၏ပြန်လာတန်ဖိုးကိုလာမည့် prompt ကိုဖြစ်လာ "prompt1" ဟုခေါ်နေတဲ့လုပ်ထုံးလုပ်နည်း defining နေဖြင့်သတ်မှတ်နိုင်ပါသည်။ ကြေညာချက်ပွင့်လင်းကိုးကား, ကွင်းစ, မသန်စွမ်းပဲ, ဒါမှမဟုတ်ကွင်းခတ်ထားပြီးလျှင်, အလယ်တန်း prompt ကို (default အနေဖြင့် "+>") NEWLINE အပေါ်သို့ထုတ်ပေးသည်။ အဆိုပါအလယ်တန်း prompt ကို "prompt2" ဟုခေါ်နေတဲ့လုပ်ထုံးလုပ်နည်း defining သတ်မှတ်နိုင်ပါသည်။

စကားပြန်စဉ်အတွင်းချက်ပြုတ် mode ကိုကုန်ကြမ်း mode ကိုသုံးပြီး, အက၎င်း၏ခေါ်ဆိုသူ၏ခံခဲ့ရလျှင်ပင်အသုံးပြုသည်။

stdin ပိတ်ပါသည်လျှင် -eof အလံကိုအသုံးပြုသည်မဟုတ်လျှင်, စကားပြန်နောက်ဆက်တွဲအငြင်းအခုံမဖြစ်၏သောအမှု၌, ပြန်လာပါလိမ့်မယ်။

log_file [args] [[-a] ဖိုင်]
တစ်ဖိုင်အမည်ပေးလျှင် log_file ဖိုင်ထဲမှာ (ထိုအချက်မှာစတင်) အဲဒီ session တစ်ခုမှတ်တမ်းမှတ်တမ်းတင်လိမ့်မယ်။ အဘယ်သူမျှမငြင်းခုံပေးထားလျှင် log_file မှတ်တမ်းတင်ကိုရပ်တန့်ပါလိမ့်မယ်။ မဆိုယခင်မှတ်တမ်းဖိုင်တံခါးပိတ်ဖြစ်ပါတယ်။

အဲဒီအစားတစ်ဖိုင်အမည်များ၏တစ်ဦး TCL ဖိုင်အမှတ်အသားဟာ -open သို့မဟုတ် -leaveopen အလံ အသုံးပြု. ထောက်ပံ့ပေးနိုင်ပါသည်။ ဒါက spawn command ကိုဆင်တူသည်။ (အသေးစိတ်အချက်အလက်ကိုများအတွက် spawn ကြည့်ရှုပါ။ )

အဆိုပါ log_user command ကိုအားဖြင့်နှိမ်နင်းခဲ့ကွောငျးအဆိုပါ -a အလံတပ်ဖွဲ့များ output ကို logged ခံရဖို့။

ပုံမှန်အားဖြင့်, အ log_file command ကိုပယ်ခြင်းနှင့်တဦးတည်း session တစ်ခုအတွက်အကြိမ်ပေါင်းများစွာပေါ် logging လှည့်နိုင်ဖြစ်ခြင်း၏အဆင်ပြေဘို့, အစားသူတို့ကို truncating ထက်အဟောင်းဖိုင်များ appends ။ ဖိုင်တွေ truncate ရန်, -noappend အလံကိုအသုံးပြုပါ။

အဆိုပါ -info အလံပေးထားလတ်တလော Non-အင်ဖိုအငြင်းပွားမှုများ၏ဖော်ပြချက်ပြန်သွားဖို့ log_file ကိုဖြစ်ပေါ်စေသည်။

0 င် | | 1 -info log_user
ပုံမှန်အားဖြင့်, အပို့ / (ပွင့်လင်းလျှင်တစ်ဦး logfile) တွေ့ဆုံဆွေးနွေးရေး stdout မှ logged ဖြစ်ပါတယ်မျှော်လင့်ထား။ stdout ဖို့သစ်ထုတ်လုပ်ရေးက command "log_user 0" ကပိတ်ထားနှင့် "log_user 1" အားဖြင့် reenabled ဖြစ်ပါတယ်။ အဆိုပါ logfile မှ logging မပြောင်းလဲဖြစ်ပါတယ်။

အဆိုပါ -info အလံပေးထားလတ်တလော Non-အင်ဖိုအငြင်းပွားမှုများ၏ဖော်ပြချက်ပြန်သွားဖို့ log_user ကိုဖြစ်ပေါ်စေသည်။

[-D] [-i spawn_id] [size ကို] match_max
မျှော်လင့်ထားခြင်းဖြင့်ပြည်တွင်းရွှေ့ပြောင်းအသုံးပြုသော (bytes ဖြင့်) ကိုကြားခံ၏အရွယ်အစားတစ်ခုအဖြစ်သတ်မှတ်ပါတယ်။ အဘယ်သူမျှမအရွယ်အစားအငြင်းအခုံနှင့်အတူလက်ရှိအရွယ်အစားပြန်ရောက်နေပါတယ်။

အဆိုပါ -D အလံနှင့်တကွ, default အရဲ့အရွယ်အစားကိုသတ်မှတ်တာဖြစ်ပါတယ်။ အဆိုပါ -i အလံနှင့်အတူ (ကနဦးက default 2000 ဖြစ်ပါတယ်), အရွယ်အစားမဟုတ်ရင်ကလက်ရှိအဘို့သတ်မှတ်, ထိုအမည်ဖြင့်မှည့ spawn အိုင်ဒီများအတွက်သတ်မှတ် သည့်လုပ်ငန်းစဉ်

ပြသမှု [- # spawn_id] [- # spawn_id] [ ... ] အစီအစဉ်ကို [args]
အဆုံးသတ်ထားတဲ့လက်ရှိမျှော်လင့်အစီအစဉ်၏အရပျ၌ executes "အစီအစဉ်ကို args" ။ ဒါကြောင့်တစ်ဦးရဲ့ login shell ကိုကြီးလျှင်အဖြစ်တစ်ဦးကရှင်းလင်းသောတုံးတိုအငြင်းအခုံက command အမည်ဖြင့်များ၏ရှေ့မှောက်၌တစ်တုံးတိုတွန်းအားပေးသည်။ အားလုံး spawn_ids အငြင်းပွားမှုများအဖြစ်အမည်ရှိသူတို့အဘို့ မှလွဲ. ပိတ်လိုက်ရသည်။ ဤအမည်ရှိ file ကိုဖေါ်ထုတ်ပေါ်သို့တစ်ခုသို့ဆက်စပ်နေကြသည်။

Spawn_ids ကိုအမွေခံရဖို့အစီအစဉ်သစ်အဘို့ဖေါ်ထုတ် file တစ်ခုသို့ဆက်စပ်နေကြသည်။ ဥပမာအားဖြင့်, အောက်ပါလိုင်းစစ်တုရင်ပြေးကြောင့်လက်ရှိအားဖြင့်ထိန်းချုပ်ခံရဖို့ခွင့်ပြု သည့်လုပ်ငန်းစဉ် - ဆိုတစ်ဦးစစ်တုရင်မာစတာ။

ပြသမှု -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id စစ်တုရင်

အဆိုပါမျှော်လင့်ပြီးကတည်းကဤ "-u အပြန်အလှန်" ထက်ပိုပြီးထိရောက်ဖြစ်ပါသည်, သို့သော်သူက programming အပြန်အလှန်လုပ်ဖို့စွမ်းရည်ယဇ်ပူဇော်သော ဖြစ်စဉ်ကို ထိန်းချုပ်မှုမရှိတော့ပါ။

အဘယ်သူမျှမထိန်းချုပ် terminal ကိုထောက်ပံ့ပေးကြောင်းသတိပြုပါ။ သငျသညျ disconnect သို့မဟုတ် Standard input ကို remap လျှင်ထို့ကြောင့်, အလုပ်ထိန်းချုပ်မှု (ခွံ, ရဲ့ login, etc) ပြုအစီအစဉ်များကိုစနစ်တကျလုပ်ဆောင်နိုင်ရန်လိမ့်မည်မဟုတ်ပါ။

ကွာခြားမှုနှုန်း [-D] [-i spawn_id] [တန်ဖိုးကို]
ကွာခြားမှုနှုန်းမွေးထုတ်ဖြစ်စဉ်များ၏ output ကနေထိန်းသိမ်းထားသို့မဟုတ်ချွတ်ရပါမည်ရှိမရှိသတ်မှတ်ပါတယ်။ တနျဖိုးသုညဖြစ်တယ်ဆိုရင်, ကွာခြားမှုနှုန်းကိုချွတ်သည်, မဟုတ်ရင်ကချွတ်မပေးပါ။ အဘယ်သူမျှမတနျဖိုးအငြင်းအခုံနှင့်အတူလက်ရှိတန်ဖိုးကပြန်ရောက်သည်။

အဆိုပါ -D အလံနှင့်တကွ, default အနေနဲ့ကွာခြားမှုနှုန်းတန်ဖိုးကိုသတ်မှတ်ထားခြင်းဖြစ်သည်။ (ကနဦးက default 1, ဆိုလိုသည်မှာကွာခြားမှုနှုန်းကိုချွတ်မရဖြစ်ပါတယ်။ ) ကို -i အလံနှင့်အတူကွာခြားမှုနှုန်းတန်ဖိုးကိုမဟုတ်ရင်ကလက်ရှိအဘို့သတ်မှတ်, ထိုအမည်ဖြင့်မှည့ spawn အိုင်ဒီများအတွက်သတ်မှတ် သည့်လုပ်ငန်းစဉ်

remove_nulls [-D] [-i spawn_id] [တန်ဖိုးကို]
null ပုံစံကိုက်ညီခြင်းသို့မဟုတ် variable ကို expect_out သို့မဟုတ် interact_out အတွက်သိုလှောင်မတိုင်မီမွေးထုတ်ဖြစ်စဉ်များ၏ output ကနေထိန်းသိမ်းထားသို့မဟုတ်ဖယ်ရှားခြင်းရှိမရှိသတ်မှတ်ပါတယ်။ တန်ဖိုးကို 1 ဖြစ်လျှင်, null ဖယ်ရှားပစ်ပါသည်။ တန်ဖိုးအား 0 င်ဖြစ်လျှင်, null ဖယ်ရှားကြသည်မဟုတ်။ အဘယ်သူမျှမတနျဖိုးအငြင်းအခုံနှင့်အတူလက်ရှိတန်ဖိုးကပြန်ရောက်သည်။

အဆိုပါ -D အလံနှင့်အတူ, ပုံသေတန်ဖိုးသတ်မှတ်ထားခြင်းဖြစ်သည်။ (ဆိုလိုသည်မှာ, null ဖယ်ရှားပစ်ပါသည်။ ကနဦးက default 1, ဖြစ်ပါတယ်) ကို -i အလံနှင့်အတူ, တန်ဖိုးမဟုတ်ရင်ကလက်ရှိအဘို့သတ်မှတ်, ထိုအမည်ဖြင့်မှည့ spawn အိုင်ဒီများအတွက်သတ်မှတ် သည့်လုပ်ငန်းစဉ်

null ဖယ်ရှားလျက်ရှိသည်ဖြစ်စေ, မဃနှင့် stdout မှတရားမဝင်သော bytes မှတ်တမ်းတင်လိမ့်မယ်မျှော်လင့်။

string ကို [-flags] သို့ပေးပို့
လက်ရှိရန် string ကိုပို့ပေး ဖြစ်စဉ်ကို ။ ဥပမာ, command ကို

"လောက \ r ကိုဟဲလို" စေလွှတ်မည်

လက်ရှိရန် helloworld, ဇာတ်ကောင်ပို့ပေး ဖြစ်စဉ်ကို ။ (TCL တစ်ဦးလည်းပါဝင်သည် printf မတရားဖမ်းဆီးရှုပ်ထွေးညှို့တည်ဆောက်နိုင်သည့်ပုံစံကိုခေါ် -like command ကို () ။ )

တစ်ပြန်လာဇာတ်ကောင်ကိုစလှေတျအထိလိုင်း-buffered input ကိုအတူအစီအစဉ်များဇာတ်ကောင်ကိုဖတ်မည်မဟုတ်ပေမယ့်ဇာတ်ကောင်များချက်ချင်းပို့ကြသည်။ တစ်ဦးကပြန်လာဇာတ်ကောင် "\ r" ခေါ်လိုက်ပါမယ်ဖြစ်ပါတယ်။

အဆိုပါ - အလံတစ်ဦး string ကိုထက်အလံအဖြစ်အဓိပ္ပာယ်ကောက်ယူခံရဖို့လာမယ့်အငြင်းအခုံတွန်းအားပေးသည်။ မဆို string ကိုတို့ကရှေ့ပြေးနိုင်ပါတယ် "-" ကတကယ်တော့တစ်ဦးအလံတူဖြစ်စေမ။ ဒါဟာမတော်တဆအလံကဲ့သို့အကြည့်သောသူတို့သည်တက် tripped ခံခြင်းမရှိဘဲ variable ကိုညှို့သတ်မှတ်ဖို့ယုံကြည်စိတ်ချရသောယန္တရားပေးပါသည်။ (အားလုံးညှို့နှင့်အတူစတင် "-" အနာဂတ်ရွေးချယ်စရာအဘို့သိုထားကြသည်။ )

အဆိုပါ -i အလံ string ကိုပုအမည်ရှိ spawn_id ထံသို့စေလွှတ်ခံရသည်ဟုမိန့်တော်မူ၏။ အဆိုပါ spawn_id user_spawn_id ဖြစ်ပြီး, terminal ကိုကုန်ကြမ်း mode မှာဖြစ်ပါတယ်လျှင်, string ကိုအတွက် NEWLINE ပြန်လာ-NEWLINE မှပာ terminal ကိုချက်ပြုတ် mode မှာခဲ့လျှင်အဖြစ်သူတို့ပေါ်လာနိုင်အောင်ဘာသာပြန်ထားသောနေကြသည်။ အဆိုပါ -raw အလံဤဘာသာကိုပိတ်ထား။

အဆိုပါ -null အလံတရားမဝင်သောဇာတ်ကောင်များ (0 bytes) ပေးပို့သည်။ ပုံမှန်အားဖြင့်တဦးတည်းတရားမဝင်သောလှေတျတျောမူသည်။ တစ်ခုက integer ဖြစ်တဲ့အတွက်ပေးပို့ဖို့မည်မျှ null ညွှန်ပြရန်အ -null အတိုင်းလိုက်နာပေမည်။

အဆိုပါ -break အလံတစ်ချိုးအခွအေနေထုတ်ပေးပါတယ်။ အဆိုပါ spawn အိုင်ဒီ "spawn -open" မှတဆင့်ဖွင့်လှစ်မယ့် TTY device ကိုရည်ညွှန်းလိုလျှင်ဤသည်သာသဘာဝကျပါတယ်။ သင်တစ်ဦးမွေးထုတ်ကြလျှင် ဖြစ်စဉ်ကို ထိုကဲ့သို့သောအစွန်အဖျားအဖြစ်, သင်ကချိုးထုတ်လုပ်ဘို့အစွန်အဖျားညီလာခံအသုံးပြုသင့်ပါတယ်။

"ဖြည်းဖြည်း" ကိုစလှေတျခံရဖို့အဆိုပါ -s အလံတပ်ဖွဲ့များ output ကိုဤသို့ကွန်ပျူတာအတူတူ outtype ဘယ်တော့မှမညျ့သူလူသားတစ်ဦးအဘို့ဒီဇိုင်းရေးဆွဲခဲ့ကာ input ကိုကြားခံ outtypes ရှိရာဘုံအခွအေနေကိုရှောင်ရှား ကြားခံ ။ ဤသည်ကို output တစ်ဦးနှစ်ဦး element ကစာရင်းယူသော variable ကို "send_slow" ၏တန်ဖိုးအားဖြင့်ထိန်းချုပ်ထားသောဖြစ်ပါတယ်။ ပထမဦးဆုံးဒြပ်စင်အက်တမ်ပေးပို့ဖို့ bytes ၏နံပါတ်ဖော်ပြသောတစ်ခုကိန်းဖြစ်ပါတယ်။ ဒုတိယ element ကအနုမြူဗုံးပို့ပေးသောစက္ကန့်အရေအတွက်ကကွဲကွာရမည်ဖြစ်သည်ဖော်ပြထားတယ်တဲ့အစစ်အမှန်အရေအတွက်ဖြစ်ပါတယ်။ ဥပမာအားဖြင့်, လှေတျတျောမူတစ်ဦးချင်းစီကို 10 ဇာတ်ကောင်များအကြား 1 မီလီစက္ကန့အတူညှို့ပေးပို့ဖို့ "-s ပေးပို့" အတင်းမယ်လို့ "send_slow {10 .001} သတ်မှတ်ထား" ။

အဆိုပါ -h အလံတပ်ဖွဲ့များ output ကိုတကယ်စာရိုက်လူသားတစ်ဦးကဲ့သို့အ (အတန်ငယ်) ကိုစလှေတျခံရဖို့။ လူ့ကဲ့သို့သောနှောင့်နှေးဇာတ်ကောင်များအကြားပေါ်လာပါသည်။ (အဆိုပါ algorithm ကိုဒီအထူးသဖြင့်လျှောက်လွှာကိုက်ညီမှပြုပြင်မွမ်းမံနှင့်အတူတစ် Weibull ဖြန့်ဖြူးအပေါ်သို့အခြေခံသည်။ ) ဤအထွက်ငါးဒြပ်စင်စာရင်းယူသော variable ကို "send_human" ၏တန်ဖိုးအားဖြင့်ထိန်းချုပ်ထားသောဖြစ်ပါတယ်။ ပထမဦးဆုံးဒြပ်စင်နှစ်မျိုးလုံးစက္ကန့်အတွင်းဇာတ်ကောင်များ၏ပျမ်းမျှအား interarrival အချိန်ဖြစ်ပါသည်။ ပထမဦးဆုံး default အနေဖြင့်အသုံးပြုသည်။ ဒုတိယရံဖန်ရံခါထိုကဲ့သို့သောအကူးအပြောင်းမှာပေါ်ပေါက်သောသိမ်မွေ့ဖြင့်ခေတ္တတူအောင်ဖန်တီးရန်, စကားလုံးနောက်ဆုံးတွင်မှာအသုံးပြုသည်။ တတိယ parameter သည် .1 1 ကျိုးကြောင်းဆီလျော် variable ကိုဖြစ်ပါသည်, အတော်လေး variable ကိုဖြစ်ပြီး, 10 အတော်လေးလျော့ပါးသွားမည်ဖြစ်သလိုရှိရာအမျိုးမျိုးပြောင်းလဲတဲ့အတိုင်းအတာဖြစ်ပါတယ်။ အဆိုပါအစွန်းအသင်္ချေရန်ပါ 0 င်ကြသည်။ နောက်ဆုံးနှစ်ခု parameters တွေကိုအသီးသီး, နိမ့်ဆုံးနှင့်အမြင့်ဆုံး interarrival အချိန်ဖြစ်ပါသည်။ နိမ့်ဆုံးနှင့်အမြင့်ဆုံးနောက်ဆုံးနှင့် "ကလစ်" နောက်ဆုံးအချိန်အသုံးပြုကြသည်။ နိမ့်ဆုံးနှင့်အမြင့်ဆုံးကလစ်အလုံအလောက်တန်ဖိုးများလျှင်အဆုံးစွန်ပျမ်းမျှအားပေးထားသောပျှမ်းမျှအနေဖြင့်အတော်လေးကွဲပြားခြားနားနိုင်ပါတယ်။

ဥပမာတစ်ခုအဖြစ်အောက်ပါ command ကိုတစ်ဦးအစာရှောင်ခြင်းနှင့်ကိုက်ညီစာစီစာရိုက် emulates:

-h ပေးပို့ {.1 .3 1 .05 2} send_human သတ်မှတ်ထား "ငါသည်မွတ်သိပ်မိပါတယ်။ ရဲ့နေ့လယ်စာကိုပြုစေ။ "

အောက်ပါတစ်ရက်နာပြီးနောက်ပိုပြီးသင့်လျော်ပါလိမ့်မယ်နေချိန်မှာ:

set ကို send_human {.4 .4 .2 .5 100} -h ပေးပို့ "Goodd ပါတီမျက်တောင်ညဥ့်!"

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

တရားမဝင်သောဇာတ်ကောင်များပေးပို့ခြင်းသည်, အားလပ်ချိန်များပေးပို့ခြင်းသည်, နှေးနှေး output ကိုအတင်းအကျပ်အဘို့နှင့်လူ့-စတိုင် output ကိုများအတွက်အလံနှစ်ဦးနှစ်ဖက်သီးသန့်ရှိပါတယ်။ နောက်ဆုံးသတ်မှတ်ထားသောသာတဦးတည်းကိုအသုံးပြုလိမ့်မည်။ ထို့အပွငျအဘယ်သူမျှမ string ကိုအငြင်းအခုံတရားမဝင်သောဇာတ်ကောင်သို့မဟုတ်လပ်ချိန်ပေးပို့ခြင်းများအတွက်အလံနှင့်အတူသတ်မှတ်ထားသောနိုင်ပါသည်။

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

ဒီစနစ်ပြင်ပစကားဝှက်တောင်းလာပါဘူးဘယ်လိုချိုးရန်, # အပေါ်ဟက်ကာများအရိပ်အမြွက်ပေးခြင်းကိုရှောင်ရှားရန်, # ။ # အိပ်ပျော်ခြင်း 5 ပို့ရန် password ကို \ r ကို very.secure.gov spawn telnet ဖြည့်စွက်ရန်အမှုဆောင်အရာရှိ 5 စက္ကန့်စောင့်ပါ

exp_send ပို့ရန်တစ်ခု alias ကိုဖြစ်ပါတယ်။ သငျသညျ Expectk ဒါမှမဟုတ် Tk ပတ်ဝန်းကျင်တွင်မျှော်လင့်အချို့နဲ့အခြားမူကွဲအသုံးပြုနေသည်ဆိုပါကတစ်ဦးလုံးဝကွဲပြားခြားနားသောရည်ရွယ်ချက် Tk အားဖြင့်သတ်မှတ်ပါတယ်ပို့လိုက်ပါ။ exp_send ပတ်ဝန်းကျင်မှာအကြားလိုက်ဖက်မှုပေးနေပါတယ်။ အလားတူနာမည်ကအခြားမျှော်လင့်၏အခွားများအတွက်ထောက်ပံ့ပေးနေကြသည်ပညတ်တော်တို့ကိုပေးပို့ပါ။

send_error [-flags] string ကို
က output မဟုတ်ဘဲလက်ရှိထက် stderr ထံသို့စေလွှတ်ကြောင်း မှလွဲ. ပို့ကဲ့သို့ဖြစ်၏ ဖြစ်စဉ်ကို

[-] string ကို send_log
string ကိုသာ (log_file ကြည့်ရှုပါ။ ) ထိုမှတ်တမ်းဖိုင်ပို့သောအဘယ်သူမျှမမှတ်တမ်းဖိုင်ကိုဖွင့်ထားလျှင်အဆိုပါအငြင်းပွားမှုများကိုလျစ်လျူရှုနေကြပါတယ် မှလွဲ. ပို့ကဲ့သို့ဖြစ်၏။

send_tty [-flags] string ကို
က output ကိုစလှေတျကွောငျး မှလွဲ. ပို့ကဲ့သို့ဖြစ်၏ dev / TTY / ထက်လက်ရှိ ဖြစ်စဉ်ကို

send_user [-flags] string ကို
က output မဟုတ်ဘဲလက်ရှိထက် stdout ထံသို့စေလွှတ်ကြောင်း မှလွဲ. ပို့ကဲ့သို့ဖြစ်၏ ဖြစ်စဉ်ကို

အိပ်စက်ခြင်းစက္ကန့်
ဇာတ်ညွှန်းမှဖြစ်ပေါ်စေသည် အိပ် စက္ကန့်ပေးထားသောအရေအတွက်။ စက္ကန့်မယ့်ဒဿမအရေအတွက်ကိုဖြစ်နိုင်သည်။ မြည်းမျှော်လင့်နေချိန်မှာ Interrupt (နှင့် Tk ဖြစ်ရပ်များကိုသင် Expectk ကိုအသုံးပြုနေလျှင်) လုပ်ငန်းများ၌နေကြသည်။

spawn [args] အစီအစဉ်ကို [args]
အသစ်တစ်ခုကိုဖန်တီးပေး သည့်လုပ်ငန်းစဉ် "အစီအစဉ်ကို args" running ။ သူတို့ကတခြားအားဖြင့်ဖတ်ပါနှင့်စာဖြင့်ရေးသားစေခြင်းငှါဒါသည်၎င်း၏ stdin, stdout နှင့် stderr, မျှော်လင့်ချိတ်ဆက်နေကြသည်ပညတ်တော်တို့ကိုမျှော်လင့်။ အဆိုပါကွန်နက်ရှင်နီးကပ်နေဖြင့်သို့မဟုတ်လျှင်ကျိုးသည် လုပ်ငန်းစဉ်အား သူ့ဟာသူဖိုင်ကိုဖေါ်ထုတ်မဆိုပိတ်။

တစ်တဲ့အခါမှာ ဖြစ်စဉ်ကို spawn ခြင်းဖြင့်စတင်ခဲ့ခြင်းဖြစ်သည်, ထို variable ကို spawn_id ကြောင်းရည်ညွှန်းတဲ့ descriptor ကိုသတ်မှတ်ထား ခြင်းလုပ်ငန်းစဉ် ။ အဆိုပါ ဖြစ်စဉ်ကို spawn_id အားဖြင့်ဖော်ပြထားတဲ့ "လက်ရှိစဉ်းစားသည် လုပ်ငန်းစဉ်အား " ။ spawn_id အလုပ်ထိန်းချုပ်မှုပေးအကျိုးသက်ရောက်မှုအတွက်, ဖတ်ခြင်းသို့မဟုတ်စာဖြင့်ရေးသားနိုင်ပါသည်။

user_spawn_id အသုံးပြုသူကိုရည်ညွှန်းသော descriptor ကိုင်တစ်ဦးကမ္ဘာလုံးဆိုင်ရာ variable ကိုဖြစ်ပါတယ်။ spawn_id ဒီတန်ဖိုးသတ်မှတ်တဲ့အခါမှာဥပမာ, expect_user တူသောပြုမူကိုမျှော်လင့်။

ကိုယ့် error_spawn_id စံအမှားရည်ညွှန်းသော descriptor ကိုင်တစ်ဦးကမ္ဘာလုံးဆိုင်ရာ variable ကိုဖြစ်ပါတယ်။ spawn_id ဒီတန်ဖိုးသတ်မှတ်တဲ့အခါမှာဥပမာ, send_error တူသောပြုမူနေပေးပို့ပါ။

tty_spawn_id / dev / TTY ကိုရည်ညွှန်းသော descriptor ကိုင်တစ်ဦးကမ္ဘာလုံးဆိုင်ရာ variable ကိုဖြစ်ပါတယ်။ dev / TTY (မှာထိုကဲ့သို့သော cron ၌ရှိသကဲ့သို့, ဒါမှမဟုတ်အသုတ် script ကို) မတည်ရှိပါဘူး / လျှင်, tty_spawn_id သတ်မှတ်မထားပါ။ ဤသည်အဖြစ်စမ်းသပ်စစ်ဆေးစေခြင်းငှါ:

{[အင်ဖို tty_spawn_id vars]} လျှင် {# / dev / TTY တည်ရှိ} အခြား {# / dev / TTY ဖြစ်ကောင်း cron အတွက် # မတည်ရှိပါဘူး, အသုတ်, ဒါမှမဟုတ်ဇာတ်ညွှန်းမှာ}

spawn အဆိုပါ UNIX တွင်ပြန်လည်ရောက်ရှိ ဖြစ်စဉ်ကို အိုင်ဒီ။ အဘယ်သူမျှမနေလျှင် ဖြစ်စဉ်ကို မွေးထုတ်တာဖြစ်ပါတယ်, 0 ပြန်ရောက်နေပါတယ်။ အဆိုပါ variable ကို spawn_out (ကျွန်, နာမည်) ကို Pty ကျွန်ကိရိယာ၏နာမတော်ကိုတည် ထား. ဖြစ်ပါသည်။

ပုံမှန်အားဖြင့်, spawn က command အမည်နှင့်အငြင်းပွားမှုများကိုပဲ့။ အဆိုပါ -noecho အလံဤသို့ပြုထံမှ spawn ရပ်လိုက်နိုင်သည်။

အဆိုပါ -console အလံ console ကို output ကို၎င်းမွေးထုတ်ဖို့ redirected ခံရဖို့ကိုဖြစ်ပေါ်စေသည် ဖြစ်စဉ်ကို ။ ဒါကအားလုံးစနစ်များအပေါ်ထောက်ခံသည်မဟုတ်။

ပြည်တွင်းရွှေ့ပြောင်း, spawn တစ် Pty အသုံးပြုအသုံးပြုသူရဲ့ TTY ကဲ့သို့တူညီသောလမ်းန။ အားလုံးဆက်တင်များ (stty (1) အရ) "စိတ်ကောင်းသော" ဖြစ်ကြောင်းဒါကြောင့်ဒီအထပ်မံနဖြစ်ပါတယ်။ အဆိုပါ variable ကို stty_init သတ်မှတ်ထားသောသည်ဆိုပါကနောက်ထပ်ဖွဲ့စည်းမှုပုံစံအဖြစ် stty အငြင်းပွားမှုများရဲ့ style အတွက်အဓိပ္ပာယ်ကောက်ယူသည်။ ဥပမာ, "ကုန်ကြမ်း stty_init set ကို" နောက်ထပ်မွေးထုတ်ဖြစ်စဉ်များရဲ့ဆိပ်ကမ်းကုန်ကြမ်း mode မှာ start စေပါလိမ့်မယ်။ -nottycopy အသုံးပြုသူရဲ့ TTY အပေါ်အခြေခံပြီးကနဦး skips ။ -nottyinit က "စိတ်ကောင်းသော" စတင်ခြင်း skips ။

ပုံမှန်အားဖြင့် spawn execute အနည်းငယ်သာအချိန်ကြာပါတယ်။ သငျသညျအချိန်သိသိသာသာငွေပမာဏကိုယူပြီး spawn သတိထားမိပါကဖြစ်နိုင်တည်ရှိပြီးလူဖြစ်ကြောင်း ptys ကြုံနေရသည်။ စမ်းသပ်မှု၏အဖြေအရေအတွက်ကို ထား. ဖြစ်စဉ်များနှင့်အတူငွိရှောင်ရှားရန် ptys အပေါ်ကို run နေကြသည်။ (ဤတည်ရှိပြီးလူ Pty လျှင် 10 စက္ကန့်ကိုယူ။ ) အပြေးမျှော်လင့်ထူးဆန်းပြည်နယ်များအတွက်အများအပြား ptys ရင်ဆိုင်နေရတဲ့လျှင် -D option ကိုပြသပါလိမ့်မယ်အတူမျှော်လင့်ပါ။ သင်တို့သည်ဤ ptys ပူးတွဲထားတဲ့ရန်လုပ်ငန်းစဉ်များမသတ်နိုင်လျှင်, သင့်သာပြန်လည်ကု reboot မှဖြစ်နိုင်သည်။

(program ကိုမတည်ရှိပါဘူးတဲ့အခါမှာဥပမာ) အမှုဆောင်အရာရှိများ (2) ပျက်ကွက်နေသောကြောင့်ပရိုဂရမ်ကိုအောင်အောင်မြင်မြင်မွေးထုတ်မပေးနိုင်လျှင်, error message ကိုလာမယ့် interactive အားဖြင့်ပြန်လာသောသို့မဟုတ် command ကိုမျှော်လင့်ထား program ကို run ခဲ့လျှင်အဖြစ်နှင့် output ကိုအဖြစ် error message ကိုထုတ်လုပ်ပါလိမ့်မည်။ ဒီအမူအကျင့် spawn များ၏အကောင်အထည်ဖော်မှု၏သဘာဝအကျိုးဆက်ဖြစ်ပါတယ်။ ပြည်တွင်းရွှေ့ပြောင်း, ထိုမွေးထုတ်ထားတဲ့ပြီးနောက်, ချိတ် spawn ဖြစ်စဉ်ကို မူလမျှော်လင့်နှငျ့ဆကျသှယျဖို့မလမ်းရှိပါတယ် ဖြစ်စဉ်ကို ပု spawn_id မှတဆင့်ဆက်သွယ်ရေးများကလွဲပြီး။

အဆိုပါ -open အလံတစ် TCL ဖိုင်အမှတ်အသားအဖြစ်အဓိပ္ပာယ်ကောက်ယူခံရဖို့လာမယ့်အငြင်းအခုံကိုဖြစ်ပေါ်စေသည် (ပွင့်လင်းခြင်းဖြင့်ပြန်လာသောဆိုလိုသည်မှာ။ ) ကမွေးထုတ်ခဲ့ကြပါလျှင်အဖြစ် spawn အိုင်ဒီထို့နောက်သုံးနိုငျ ဖြစ်စဉ်ကို ။ (ဖိုင်အမှတ်အသားမရှိတော့ပါကိုအသုံးပြုရပါမည်။ ) ဤသင်တစ်ဦး Pty မသုံးဘဲမွေးထုတ်ဖြစ်စဉ်များအဖြစ်ကုန်ကြမ်းပစ္စည်းတွေ, ဖိုင်များနှင့်ပိုက်လိုင်းပြုမူဆက်ဆံပေးနိုင်ပါတယ်။ 0 င်ခြင်းမရှိဆက်နွယ်လည်းမရှိညွှန်ပြမှပြန်လာသောဖြစ်ပါတယ် ဖြစ်စဉ်ကို ။ အဆိုပါမွေးထုတ်ဖို့ကွန်နက်ရှင်တဲ့အခါမှာ ဖြစ်စဉ်ကို ပိတ်ထားသည်, ဒါကြောင့် TCL ဖိုင်အမှတ်အသားဖြစ်ပါတယ်။ အဆိုပါ -leaveopen အလံဟာ spawn အိုင်ဒီပိတ်ထားသည်ကိုပင်ပြီးနောက်ဖိုင်အမှတ်အသားပွင့်လင်း left ခံရဖို့ကိုဖြစ်ပေါ်စေသည် -leaveopen ကြောင်း မှလွဲ. -open ဆင်တူသည်။

အဆိုပါ -pty အလံဖွင့်လှစ်ခဲ့ပေမယ့်မျှမခံရဖို့တစ် Pty ဖြစ်ပေါ်စေသည် ဖြစ်စဉ်ကို မွေးထုတ်။ 0 င်ခြင်းမရှိဆက်နွယ်လည်းမရှိညွှန်ပြမှပြန်လာသောဖြစ်ပါတယ် ဖြစ်စဉ်ကို ။ Spawn_id ခါတိုင်းလိုအဖြစ်သတ်မှတ်ထားခြင်းဖြစ်သည်။

အဆိုပါ variable ကို spawn_out (ကျွန်, fd) ကို Pty ကျွန်မှသက်ဆိုင်ရာဖိုင်တစ်ဖိုင်အမှတ်အသားဟုသတ်မှတ်ထားသည်။ ဒါဟာ "အနီးကပ် -slave" သုံးပြီးပိတ်ထားနိုင်ပါတယ်။

အဆိုပါ -ignore အလံအမည်မွေးထုတ်အတွက်လျစ်လျူရှုခံရဖို့တစ်အချက်ပြ ခြင်းလုပ်ငန်းစဉ် ။ ဒီလိုမှမဟုတ်ရင်အချက်ပြမှုများကို default အပြုအမူရ။ signals တစ်ခုချင်းစီကို signal ကိုသီးခြားအလံလိုအပ်သည် မှလွဲ. ထောင်ချောက် command ကိုကာလ၌ရှိသကဲ့သို့အမည်ရှိနေကြသည်။

strace အဆင့်အထိ
ကွပ်မျက်ခံရမခံရမီပုံနှိပ်ခံရဖို့ထုတ်ပြန်ချက်များသည်အောက်ပါအကြောင်းရင်းများ။ (TCL ရဲ့သဲလွန်စ command ကိုသဲလွန်စတွေကိုရှင်းလင်း variable တွေကို။ ) အဆင့်အထိခြေရာကောက်ရန်ခေါ်ဆိုမှု stack ထဲမှာဘယ်လောက်ဝေးချဖော်ပြသည်။ ပထမဦးဆုံး 4 ဖုန်းခေါ်ဆိုမှုများအဆင့်ဆင့်သို့သော်အောက်တွင်ဖော်ပြထားသောအဘယ်သူအားမျှ tracing စဉ်ဥပမာ, အောက်ပါ command ကိုပြေးမျှော်လင့်။

-c "strace 4" script.exp မျှော်လင့်ထား

အဆိုပါ -info အလံပေးထားလတ်တလော Non-အင်ဖိုအငြင်းပွားမှုများ၏ဖော်ပြချက်ပြန်သွားဖို့ strace ကိုဖြစ်ပေါ်စေသည်။

stty args
ပြင်ပ stty command ကိုမှအလားတူ terminal ကို Modes သာပြောင်းလဲစေပါသည်။

ပုံမှန်အားဖြင့်, အထိန်းချုပ်ထား terminal ကိုဝင်ရောက်နေပါတယ်။ အခြား terminal status ကိုအဘို့အတောင်းဆိုမှုများအမိန့်၏ရလဒ်အဖြစ်ကပြန်လာ "appending နေဖြင့်ဝင်ရောက်စေနိုင်သည်။ အဘယ်သူမျှမ status ကိုမေတ္တာရပ်ခံပြီးထိန်းချုပ်ထား terminal ကိုဝင်ရောက်လျှင်, ကုန်ကြမ်းများနှင့်ပဲ့တင်သံ attribute တွေ၏ယခင် status ကိုနောက်ပိုင်းမှာဖြစ်နိုင်သည့်ပုံစံအတွက်ပြန်ရောက်နေကြ အမိန့်များကအသုံးပြုခဲ့သည်။

ဥပမာအားဖြင့်, ကုန်ကြမ်းသို့မဟုတ်အငြင်းပွားမှုများကုန်ကြမ်း mode သို့ terminal ကိုထား -cooked-raw သို့မဟုတ်ချက်ပြုတ်အဆိုပါအငြင်းပွားမှုများချက်ပြုတ် mode သို့ terminal ကိုထားတော်မူ၏။ အဆိုပါအငြင်းပွားမှုများ echo နဲ့အသီးသီးပဲ့တင်သံနှင့် noecho mode သို့ terminal ကိုထား -echo

အောက်ပါဥပမာကိုယာယီပဲ့တင်သံကို disable လုပ်ဖို့ဘယ်လိုဖော်ပြသည်။ ဒါကသူတို့အထဲ၌ passwords များကိုမြှုပ်ထားခြင်းကိုရှောင်ရှားရန်မဟုတ်ရင်-အော်တို script များများတွင်အသုံးပြုနိုင်ပါတယ်။ (ဒီအောက်မှာအပေါ်ပိုပြီးဆွေးနွေးမှုကိုအောက်တွင်အရိပ်အမြွက်ကိုမျှော်လင့်တွင်ကြည့်ပါ။ )

stty -echo send_user "Password ကို:" expect_user -re "(။ *) \ n" set password ကို $ expect_out (1, string ကို) stty ပဲ့တင်သံ

စနစ်က args
က terminal မှ command တစ်ခုအဖြစ်ရိုက်နှိပ်ခဲ့ရုံလျှင်အဖြစ်, input ကိုအဖြစ် sh (1) မှ args ပေးသည်။ shell ကို Terminal သည်အထိစောင့်မျှော်လင့်။ sh ကနေပြန်လာ status ကိုအမှုဆောင်အရာရှိက၎င်း၏ပြန်လာ status ကိုကိုင်တွယ်တူညီသောလမ်းကိုင်တွယ်နေပါတယ်။

ဇာတ်ညွှန်းမှ stdin နှင့် stdout ပြန်ညွှန်းထားတဲ့အမှုဆောင်အရာရှိမတူဘဲ, စနစ် (string ကိုသူ့ဟာသူညွှန်ပြကြောင်းထက်အခြား) မျှ redirection လုပ်ဆောင်တယ်။ ထို့ကွောငျ့ dev / TTY / ထံသို့တိုက်ရိုက်စကားပြောရအစီအစဉ်များကိုသုံးစွဲဖို့ဖြစ်နိုင်ပါတယ်။ တူညီသောအကြောင်းပြချက်များအတွက်စနစ်၏ရလဒ်များမှတ်တမ်းတှငျမှတျတမျးတငျထားသကြသည်မဟုတ်။

Timestamp ကို [args]
တစ်ဦး Timestamp ကိုပြန်လည်ရောက်ရှိ။ အဘယ်သူမျှမငြင်းခုံနှင့်တကွ, ယုဂ်ကတည်းကစက္ကန့်အရေအတွက်ကပြန်ရောက်သည်။

အဆိုပါ -format အလံပေမယ် strftime များအတွက် POSIX စည်းမျဉ်းစည်းကမ်းတွေအရသိရသည်လုပ်အစားထိုးနဲ့အတူပြန်လာသောသော string ကိုမိတ်ဆက်။ ဥပမာ% တစ်ဦးအနေနဲ့အတိုကောက်နင်္လာမှသောကြာအမည်အား (ဆိုလိုသည်မှာ, Sat) ဖြင့်အစားထိုးသည်။ အခြားသူများကနေသောခေါင်းစဉ်:

% ဟာအတိုကောက်နင်္လာမှသောကြာအမည်ဖြင့်% ထဲမှာရှိသကဲ့သို့တစ်ဦးကအပြည့်အဝနင်္လာမှသောကြာအမည်ဖြင့်% ခအတိုကောက်လအမည်ဖြင့်% B ကိုအပြည့်အဝလအမည်ဖြင့်% က c နေ့စွဲအချိန်: လ% ဃနေ့က (01-31% H ကိုတစ်နာရီဗုဒ္ဓဟူးနေ့အောက်တိုဘာ 6 11:45:56 1993 (00-23)% ငါတစ်နာရီ (01-12)% ညနေ့က (001-366)% မီတာတစ်လ (01-12)% M ကမိနစ် (00-59)% p နံနက်သို့မဟုတ်ညနေ% S ကိုဒုတိယ (00-61) % ဦးတစ်နေ့လျှင် (1-7, တနင်္လာနေ့ရက်သတ္တပတ်၏ပထမဦးဆုံးနေ့) နေ့က w% ဦးရက်သတ္တပတ် (00-53, ပထမဦးဆုံးတနင်္ဂနွေတပတ်တဦးတည်း၏ပထမဦးဆုံးနေ့)% V ကိုရက်သတ္တပတ် (01-53, က ISO 8601 စတိုင်)% (0- 6)% ဒဗလျူရက်သတ္တပတ် (00-53, ပထမတနင်္လာနေ့တပတ်တဦးတည်း၏ပထမဦးဆုံးနေ့)% က x နေ့စွဲအချိန်ကာလ၌ရှိသကဲ့သို့: ဗုဒ္ဓဟူးနေ့အောက်တိုဘာ 6 1993% X ကိုအချိန်ကာလ၌ရှိသကဲ့သို့: 23:59:59% y ကတစ်နှစ် (00-99) ကာလ၌ရှိသကဲ့သို့% Y ကိုတစ်နှစ်: 1993% Z ကိုစံတော်ချိန် (သို့မဟုတ်ဘာမျှမပါလျှင်မရဆုံးဖြတ်ခြင်း) ရှင်းလင်းသောရာခိုင်နှုန်းကနိမိတ်လက္ခဏာကို %%

အခြား% သတ်မှတ်ချက်များ undefined ဖြစ်ကြသည်။ သည်အခြားဇာတ်ကောင်နဂိုအတိုင်းရှောက်သွားပါလိမ့်မည်။ သာကို C ဒေသထောက်ခံသည်။

အဆိုပါ -seconds အလံရာမှ format နဲ့တစ်ဦးအရင်းအမြစ်အဖြစ်အသုံးပြုခံရဖို့ယုဂ်ကတည်းကစက္ကန့်များစွာမိတ်ဆက်။ ဒီလိုမှမဟုတ်ရင်လက်ရှိအချိန်ကိုအသုံးပြုသည်။

ယင်းကိုအသုံးပြုဖို့ရန် -gmt အလံတပ်ဖွဲ့များ Timestamp ကို output ကို ဂရင်းနစ်စံတော်ချိန် စံတော်ချိန်။ အဘယ်သူမျှမအလံနှင့်အတူ, ဒေသခံစံတော်ချိန်ကိုအသုံးပြုသည်။

ထောင်ချောက် [[command ကို] အချက်ပြမှုများ]
ပေးထားသော command ကိုပေးထားသောအချက်ပြမဆို၏အနာဂတ်လက်ခံရရှိအပေါ်သို့ကွပ်မျက်ခံရခံရဖို့ကိုဖြစ်ပေါ်စေသည်။ အဆိုပါ command ကိုကမ္ဘာလုံးဆိုင်ရာအတိုင်းအတာထဲမှာကွပ်မျက်ခံရခြင်းဖြစ်သည်။ command ကိုပျက်ကွက်လျှင်, signal ကိုအရေးယူပြန်ရောက်နေပါတယ်။ command ကို string ကို SIG_IGN ဖြစ်ပါတယ်လျှင်, အချက်ပြမှုများကိုလျစ်လျူရှုနေကြပါတယ်။ command ကို string ကို SIG_DFL ဖြစ်ပါတယ်လျှင်, အချက်ပြစနစ်က default မှဖြစ်ပေါ်လျက်ရှိသည်။ အချက်ပြမှုများတစ်ခုတည်း signal ကိုသို့မဟုတ်အချက်ပြမှုများ၏စာရင်းကိုလည်းကောင်းဖြစ်ပါသည်။ signals signal ကို (3) နှုန်းအဖြစ်အရအေတှကျအားဖွငျ့သို့မဟုတ်ပုံဆောင်သဘောအရသတ်မှတ်ထားသောနိုင်ပါသည်။ အဆိုပါ "SIG" ရှေ့ဆက်ချန်လှပ်နိုင်ပါသည်။

ငြင်းခုံ (သို့မဟုတ်အငြင်းအခုံ -number) မျှနှင့်အတူ, ထောင်ချောက်ထောင်ချောက် command ကို၏အချက်ပြအရေအတွက်ကိုလတ်တလောတွင်ကွပ်မျက်ခံရခံရပြန်လည်ရောက်ရှိ။

အဆိုပါ -code အလံက command မူလကအပြေးစတင်ခဲ့သည့်အခါ TCL ပြန်လာခါနီးသမျှကုဒ်၏အရပျ၌အမိန့်များပြန်လာကုဒ်များကိုအသုံးပြုသည်။

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

အဆိုပါ -name အလံသည်လက်ရှိတွင်ကွပ်မျက်ခံရခံရထောင်ချောက် command ကို၏အချက်ပြနာမကိုအမှီပြန်လာနိုင်ရန်ထောင်ချောက် command ကိုဖြစ်ပေါ်စေသည်။

အဆိုပါ -max အလံသတ်မှတ်ထားနိုင်အကြီးဆုံး signal ကိုအရေအတွက်ကပြန်လာနိုင်ရန်ထောင်ချောက် command ကိုဖြစ်ပေါ်စေသည်။

ဥပမာ, command 'ထောင်ချောက် {send_user "ကျောက်အိုး!"} SIGINT "" ကျောက်အိုး! "print ထုတ်ပါလိမ့်မယ် တစ်ခုချင်းစီကိုအချိန်အသုံးပြုသူ ^ C ကိုခံရ၏။

ပုံမှန်အားဖြင့်, (များသောအားဖြင့် ^ C ကိုနှိပ်ခြင်းဖြင့်ထုတ်ပေးနိုင်သည့်) SIGINT နှင့် SIGTERM အကြောင်းမရှိမှထွက်ရန်မျှော်လင့်။ ဤသည်စတင်မျှော်လင့်တဲ့အခါမှာ default အနေနဲ့အသုံးပြုနေသူများကဖန်တီးအောက်ပါထောင်ချောက်, ကြောင့်ဖြစ်သည်။

ထောင်ချောက်ထွက်ပေါက် {SIGINT SIGTERM}

သင် debugger စတင်ရန် -D အလံသုံးလျှင် SIGINT အဆိုပါအပြန်အလှန် debugger စတင်ရန်ပြန်လည်အနက်အဓိပ္ပါယ်ဖွင်ဖြစ်ပါတယ်။ ဤသည်ကိုအောက်ပါထောင်ချောက်ကြောင့်ဖြစ်ပါသည်:

ထောင်ချောက် {exp_debug 1} SIGINT

အဆိုပါ debugger ထောင်ချောက်အသစ်တစ်ခုကိုထောင်ချောက် command ကိုမှပတ်ဝန်းကျင်ကို variable ကို EXPECT_DEBUG_INIT setting အားဖြင့်ပြောင်းလဲသွားနိုင်ပါတယ်။

သင်, သင်တန်း၏, ကိုယ့် script ကိုမှထောင်ချောက်ပညတ်တော်တို့ကိုဖြည့်စွက်အားဖြင့်ဤသူနှစ်ဦးစလုံးထပ်ရေးနိုင်ပါသည်။ သင်သည်သင်၏ကိုယ်ပိုင် "ထောင်ချောက်ထွက်ပေါက် SIGINT" ရှိပါကအထူးသဖြင့်, ဤ debugger ထောင်ချောက်ဖျက်ရေးသွားမည်။ သင်တို့ရှိသမျှသည်မှာ debugger မှရတဲ့အနေဖြင့်အသုံးပြုသူများအကာကွယ်တားဆီးဖို့လိုလျှင်ဤသည်အသုံးဝင်သည်။

သငျသညျ SIGINT ပေါ်တွင်သင်၏ကိုယ်ပိုင်ထောင်ချောက်သတ်မှတ်ချင်ပေမယ့်နေဆဲကအပြေးနေသည်အခါ debugger မှထောင်ချောက်အသုံးပြုလိုလျှင်:

လျှင် {! [exp_debug]} {ထောင်ချောက် mystuff SIGINT}

တနည်းအားဖြင့်, အချို့ကိုသင်ကတခြား signal ကိုသုံးပြီး debugger မှထောင်ချောက်နိုင်ပါတယ်။

ထောင်ချောက်ဒီမျှော်လင့်ဖို့ပြည်တွင်းရွှေ့ပြောင်းကိုအသုံးပြုသည်ကဲ့သို့သင်တို့ SIGALRM များအတွက်အရေးယူမှုထပ်ရေးမသွားပါစေလိမ့်မယ်။ အဆိုပါဆက်သွယ်မှုပြတ်တောက် command ကို (လျစ်လျူရှု) SIG_IGN မှ SIGALRM သတ်မှတ်။ သငျသညျနေသမျှကာလပတ်လုံးသင်နောက်ဆက်တွဲ spawn ပညတ်တော်တို့ကိုကာလအတွင်းက disable အတိုင်းဤ reenable နိုင်ပါတယ်။

ပိုပြီးအင်ဖိုအတွက် signal ကို (3) ကိုကြည့်ပါ။

[args] စောင့်ဆိုင်း
တစ်ဦးမွေးထုတ်သည်အထိနှောင့်နှေး ခြင်းလုပ်ငန်းစဉ် (သို့မဟုတ်လက်ရှိ ဖြစ်စဉ်ကို အဘယ်သူမျှမအမည်ရှိဖြစ်ပါတယ်လျှင်) အဆုံးသတ်။

ပုံမှန်အားဖြင့်လေးကိန်းများစာရင်းကိုပြန်လည်ရောက်ရှိစောင့်ပါ။ ပထမဦးဆုံးအကိန်း၏ PID ဖြစ်ပါတယ် ဖြစ်စဉ်ကို အပေါ်သို့စောင့်ဆိုင်းခဲ့။ ဒုတိယ integer ဖြစ်တဲ့အတွက်သက်ဆိုင်ရာ spawn အိုင်ဒီဖြစ်ပါတယ်။ တတိယကိန်းတစ်ခု operating system ကိုအမှားဖြစ်ပွားခဲ့သည်လျှင် -1 ဖြစ်ပါသည်, သို့မဟုတ် 0 င်မဟုတ်ရင်။ တတိယကိန်း 0 င်ခဲ့လျှင်, စတုတ္ထ integer ဖြစ်တဲ့အတွက်အဆိုပါမွေးထုတ်ခြင်းဖြင့်ပြန်လာသောအခြေအနေကိုဖြစ်ပါတယ် ဖြစ်စဉ်ကို ။ တတိယကိန်း -1 ခဲ့လျှင်, စတုတ္ထကိန်းဟာ operating system ကိုသတ်မှတ် errno ၏တန်ဖိုးဖြစ်ပါတယ်။ ကမ္ဘာလုံးဆိုင်ရာ variable ကို ERRORCODE လည်းသတ်မှတ်ထားခြင်းဖြစ်သည်။

အပိုဆောင်း element တွေကိုချောင်းမြောင်းကနေပြန်လာတန်ဖိုးကိုရဲ့အဆုံးမှာပေါ်လာလိမ့်မည်။ တစ်ခုက optional ကိုပဉ္စမဒြပ်စင်အချက်အလက်များ၏အဆင့်အတန်းသတ်မှတ်။ လောလောဆယ်ဒီဒြပ်စင်များအတွက်သာဖြစ်နိုင်သောတန်ဖိုးလာမည့်နှစ်ဦးကိုတန်ဖိုးများကို C-စတိုင် signal ကိုအမည်နှင့်တိုတောင်းတဲ့စာသားဖော်ပြချက်များမှာမည်သည့်ကိစ္စရပ်အတွက် CHILDKILLED ဖြစ်ပါတယ်။

အဆိုပါ -i အလံအဆိုပါမိန့်တော်မူ၏ ဖြစ်စဉ်ကို ပုအမည်ရှိ spawn_id (မပုဖို့သက်ဆိုင်ရာစောင့်ဆိုင်းရန် ဖြစ်စဉ်ကို အိုင်ဒီ) ။ တစ်ဦး SIGCHLD handler ကိုအတွင်းပိုင်း, ကမဆိုမွေးထုတ်ဘို့စောင့်ဆိုင်းရန်ဖြစ်နိုင် သည့်လုပ်ငန်းစဉ် အတွက် spawn အိုင်ဒီကို အသုံးပြု. -1 ဖြင့်ပြုလုပ်နိုင်ပါတယ်။

အဆိုပါ -nowait အလံဟာချောင်းမြောင်းအောင်မြင်တဲ့ချောင်းမြောင်း၏အရိပ်အယောင်နှင့်အတူချက်ချင်းပြန်သွားဖို့ကိုဖြစ်ပေါ်စေသည်။ အခါ ဖြစ်စဉ်ကို ထွက်ပေါက် (နောက်ပိုင်း), ကအလိုအလျှောက်အနေနဲ့ရှင်းလင်းပြတ်သားစွာချောင်းမြောင်းဘို့လိုအပ်ကြောင်းမရှိဘဲပျောက်ကွယ်သွားပါလိမ့်မယ်။

အဆိုပါချောင်းမြောင်း command ကိုလည်းချိတ်ချောင်းမြောင်းအသုံးပွုနိုငျ ဖြစ်စဉ်ကို "-i -1" ဟုအဆိုပါအငြင်းပွားမှုများကိုသုံးနိုင်သည်။ မွေးထုတ်ဖြစ်စဉ်များနှင့်အတူ၎င်း၏အသုံးပြုမှုနှင့်မတူဘဲဒီ command သည့်အချိန်တွင်မဆိုကွပ်မျက်ခံရနိုင်ပါသည်။ အရာကျော်မျှမထိန်းချုပ်ရှိပါသည် ဖြစ်စဉ်ကို ရိတ်ဖြစ်ပါတယ်။ သို့သော်ပြန်လာတန်ဖိုးအဘို့အ check လုပ်ထားနိုင်ပါတယ် ဖြစ်စဉ်ကို အိုင်ဒီ။

စာကြည့်တိုက်

အလိုအလျှောက်အကြောင်းကိုနှစ်ခု built-in script များမျှော်လင့်ထားဘို့စာကြည့်တိုက်သိတယ်မျှော်လင့်ထား။ ဤရွေ့ကား exp_library နှင့် exp_exec_library ဟာ variable တွေကိုအတွက်အမည်ရှိ directory များအားဖြင့်သတ်မှတ်ကြသည်။ နှစ်ဦးစလုံးသည်အခြား script များကအသုံးပြုနိုင် utility ကိုဖိုင်တွေဆံ့ဖို့ရည်ရွယ်နေကြသည်။

exp_library ဗိသုကာ-လွတ်လပ်သောဖိုင်တွေပါရှိသည်။ exp_exec_library ဗိသုကာ-မှီခိုဖိုင်တွေပါရှိသည်။ သင့်ရဲ့ system ပေါ်တွင် မူတည်. နှစ်ဦးစလုံး directory များလုံးဝအချည်းနှီးဖြစ်လိမ့်မည်။ ဖိုင်ကို $ exp_exec_library / ကြောင်-ကြားခံ၏တည်ရှိမှုကို default အားဖြင့်သင့် / bin / ကြောင်ကြားခံရှိမရှိဖော်ပြသည်။

Pretty-print ထုတ်

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

-lexpect ဖိုင် vgrind

ဥပမာများ

ဒါဟာလူအမြားတို့ကြောင့်အတူတူအရာအားလုံးကိုထားဖို့ဘယ်လိုသိသာမဖြစ် လူကို စာမျက်နှာဖော်ပြသည်။ ကျွန်မဖတ်ပါနှင့်မျှော်လင့်ဖြန့်ဖြူး၏စံနမူနာ directory ထဲတွင်နမူနာထွက်ကြိုးစားရန်တိုက်တွန်းပါသည်။ သူတို့ထဲကတချို့ကအစစ်အမှန်အစီအစဉ်များဖြစ်ကြသည်။ အခြားသူများကအချို့နည်းစနစ်၏ရိုးရှင်းစွာဖော်ပြထားတာဖြစ်ကြသည်ကို၎င်း, သင်တန်း၏, စုံတွဲတစ်တွဲပဲအမြန် Hack ဖြစ်ကြသည်။ အဆိုပါ INSTALL file ကိုဒီပရိုဂရမ်တစ်ခုအမြန်ခြုံငုံသုံးသပ်ချက်ရှိပါတယ်။

အဆိုပါမျှော်လင့်စာတမ်းများ (စကြည့်ကြည့်ပါ) လည်းအသုံးဝင်ပါသည်။ အချို့သောစာတမ်းများမျှော်လင့်၏အစောပိုင်းဗားရှင်းသက်ဆိုင်ရာ syntax ကိုအသုံးပြုပါနေစဉ်, ပူးတှဲကျိုးကြောင်းဆင်ခြင်နေတုန်းပဲခိုင်လုံသောဖြစ်ကြပြီးဤသူသည်စာမကျြနှာထက်အများကြီးပိုပြီးအသေးစိတ်သို့သွားပါ။

အသိပေးချက်

extensions ရဲ့ command ကိုအမည်များကိုမျှော်လင့်နှင့်အတူကွဲသွားရင်လိမ့်မည်။ ဥပမာအားဖြင့်, ပို့ရန်အနေနဲ့လုံးဝကွဲပြားခြားနားသောရည်ရွယ်ချက် Tk သတ်မှတ်ပါတယ်။ ဤအကြောင်းကြောင့်အများစု၏မျှော်လင့်ပညတ်တော်တို့ကို "exp_XXXX" အဖြစ်ကိုလည်းရရှိနိုင်ပါသည်။ commands နှင့် "EXP", "အကြား", "spawn" နှင့် "အချိန်ကုန်" နဲ့စတင် variable တွေကိုနာမည်မရှိကြပါဘူး။ သငျသညျပတ်ဝန်းကျင်မှာအကြားကဒီ Compatibility ကိုလိုအပ်လျှင်တိုးချဲ့ command ကိုအမည်များကိုသုံးပါ။

မျှော်လင့်ထား SCOPE တစ်ဦးမဟုတ်ဘဲလစ်ဘရယ်ရှုထောကြာပါသည်။ အထူးသဖြင့်, variable တွေကို program ကိုဒေသခံနယ်ပယ်ကနေပထမဦးဆုံးကိုရှာတွေ့ပါလျှင်ဘဲ, ကမ္ဘာလုံးဆိုင်ရာအတိုင်းအတာထဲမှာပါလိမ့်မည်မျှော်လင့်ဖို့တိကျတဲ့ပညတ်တော်တို့ကိုအားဖြင့်ဖတ်ပါ။ ဥပမာအားဖြင့်, ဤသူသည်သင်တို့အသုံးပြုမှုကိုမျှော်လင့်ကြောင်းရေးလိုက်တိုင်းလုပ်ထုံးလုပ်နည်းထဲမှာ "ကမ္ဘာလုံးဆိုင်ရာအချိန်ကုန်" နေရာရန်လိုအပ်ကြောင်း obviates ။ အခြားတစ်ဖက်တွင်, စာဖြင့်ရေးသား variable တွေကို (a "ကကမ္ဘာလုံးဆိုင်ရာ" command ကိုထုတ်ပေးလျက်ရှိသည်မဟုတ်လျှင်) ဒေသခံနယ်ပယ်ထဲမှာအမြဲရှိပါတယ်။ spawn နေတဲ့လုပ်ထုံးလုပ်နည်းအတွက်ကွပ်မျက်ခံရသောအခါဒီအကိုဖြစ်ပေါ်စေသည်အသုံးအများဆုံးပြဿနာဖြစ်ပါတယ်။ လုပ်ထုံးလုပ်နည်းအပြင်ဘက်မှာမရှိတော့ပါ, ဒါကြောင့်မွေးထုတ် spawn_id ဖြစ်စဉ်ကို မရှိတော့ရိုးရိုးဘာဖြစ်လို့လဲဆိုတော့ SCOPE ၏သုံးစွဲနိုင်သည်။ ထိုကဲ့သို့သောလုပ်ထုံးလုပ်နည်းဖို့ "ကမ္ဘာလုံးဆိုင်ရာ spawn_id" ထည့်ပါ။

သင် multispawning စွမ်းရည် (ဆိုလိုသည်မှာသင့် system ကို select လုပ်ပါ (BSD * မဟုတ်။ *) ကိုအထောက်အပံ့ပေးနိုင်ပါတယ်, စစ်တမ်း (SVR> 2), မညီမျှသောတစ်ခုခု) ကို enable မနိုင်လျှင်, သာတစ်ခုတည်းကိုထိန်းချုပ်နိုင်ပါလိမ့်မည်မျှော်လင့် ခြင်းလုပ်ငန်းစဉ် အချိန်။ ဤကိစ္စတွင်ခုနှစ်, spawn_id တင်ထားရန်ကြိုးပမ်းကြဘူး, မတစ်ဦးမွေးထုတ်နေချိန်မှာသင်ကအမှုဆောင်အရာရှိကနေတဆင့်လုပ်ငန်းစဉ်များ execute သင့်ပါတယ် ဖြစ်စဉ်ကို အပြေးနေသည်။ ထို့အပွငျ, သင်တစ်ချိန်တည်းမှာ (တစ်ဦးအဖြစ်အသုံးပြုသူအပါအဝင်) အများအပြားကိုဖြစ်စဉ်များထံမှမျှော်လင့်ထားနိုင်ပါလိမ့်မည်မဟုတ်။

terminal parameters တွေကို script များအပေါ်ကြီးမားတဲ့အကျိုးသက်ရောက်မှုရှိနိုင်ပါသည်။ ဇာတ်ညွှန်းဘုရားရဲ့အဘို့အကြည့်ဖို့တိကျမ်းစာ၌လာသည်ကားလျှင် ECHO ပိတ်ထားလျှင်ဥပမာ, ကလုပ်ဆောင်ချက်လည်းမမှန်မကန်ပါလိမ့်မယ်။ ဤအကြောင်းကြောင့်, default အနေဖြင့်တပ်ဖွဲ့များစိတ်ကောင်းသော terminal ကို parameters တွေကိုမျှော်လင့်။ ကံမကောင်းစွာပဲ, ဒီကအခြားအစီအစဉ်များအတွက်အမှုအရာမနှစ်မြို့ဖွယ်ဖြစ်စေနိုင်ပါတယ်။ ဥပမာတစ်ခုသကဲ့သို့, emacs shell ကိုက "ခါတိုင်းလို" မြေပုံချထားပုံများပြောင်းလဲပစ်ရန်လိုလား: NEWLINE NEWLINE အစားရထား-ပြန်လာ NEWLINE တစ်ခုသို့ဆက်စပ်ရနှင့်ပဲ့တင်သံကိုပိတ်ထားသည်။ ဒါကတ input ကိုလိုင်းတည်းဖြတ်ရန် emacs သုံးစွဲဖို့ခွင့်ပြုပါတယ်။ ကံမကောင်းစွာပဲဖြစ်နိုင်သည်ဒီခန့်မှန်းလို့မရဘူးမျှော်လင့်။

သငျသညျ terminal ကို parameters များကို၎င်း၏က default setting ကိုထပ်ရေး, ဒါပေမယ့်ထိုကဲ့သို့သောပတ်ဝန်းကျင်မှာများအတွက် script များကိုရေးသားသည့်အခါသို့ဖြစ်လျှင်သင်သည်အလွန်သတိထားဖြစ်ရမည်မဟုတ်မျှော်လင့်ကြောင်းတောင်းဆိုနိုင်သည်။ emacs ၏ဖြစ်ရပ်မှာတော့ဘုရားရဲ့ကဲ့သို့သောအရာများနှင့်အဆုံး-of-line ကိုမြေပုံချထားပုံများပေါ် မူတည်. ရှောင်ကြဉ်ပါ။

စာရင်းကတကယ်တော့တဦးတည်းအငြင်းအခုံသို့မဟုတ်အများအပြားပါလျှင်တစ်ခုတည်းစာရင်းသို့ braced အငြင်းပွားမှုများကိုလက်ခံသောပညတ်တော်တို့ကို (ထိုမျိုးကွဲမျှော်လင့်ထားခြင်းနှင့်အပြန်အလှန်) ဆုံးဖြတ်တဲ့ heuristic ကိုအသုံးပြုပါ။ အဆိုပါ heuristic သာစာရင်းကတကယ်တော့သူတို့ကိုအကြား Non-ကြားနေရာလွတ်ဇာတ်ကောင်နှင့်အတူမျိုးစုံ embedded \ n ကန့်သည့်တစ်ခုတည်းသောအငြင်းအခုံကိုယ်စားပြုမလာသောအခါအမှု၌ကျရှုံးနိုင်ပါ။ ဤသည်သို့သော်အငြင်းအခုံ "-nobrace" တစ်ခုတည်းအငြင်းအခုံအဖြစ်ကိုင်တွယ်ခံရဖို့တစ်ခုတည်းအငြင်းအခုံအတင်းဖို့အသုံးပြုနိုင်ပြီးလုံလုံလောက်လောက်မဖြစ်နိုင်သောပုံရသည်။ ဤသည်ပဋိသန္ဓေ ယူ. စက်-generated မျှော်လင့်ကုဒ်နှငျ့အသုံးပွုနိုငျသညျ။ အလားတူပင် -brace အဖြစ်မျိုးစုံပုံစံများ / လုပ်ရပ်တွေကိုကိုင်တွယ်ခံရဖို့တစ်ခုတည်းအငြင်းအခုံတွန်းအားပေးသည်။

bugs

ဒါဟာတကယ်ကို ( "စမတ်အမှုဆောင်အရာရှိ" သို့မဟုတ် "Send-မျှော်လင့်ထား" ဖြစ်စေဘို့) "လိင်", ဒါပေမယ့်ဥာဏ်ကောင်းသော (သို့မဟုတ်ဖြစ်ကောင်းရုံပြူရီတန်) နိုင်ကြ program ကိုအမည်ကိုမှသွေးဆောင်ခဲ့သည်။

တစ် shell ကိုမွေးထုတ်သောအခါအချို့သောစနစ်များတွင်,, ကဘာပဲဖြစ်ဖြစ်ထို TTY ပေမယ့်ပြေးရယူနိုင်ဖြစ်ခြင်းမဟုတ်အကြောင်းကိုညညျးညူ။ ဒါဟာသင့် system အကြောင်းကိုမသိသောမျှော်လင့်သောထိန်းချုပ်ထား TTY ရရှိမှုများအတွက်ယန္တရားရှိပါတယ်ဆိုလိုသည်။ ထိုသို့အဘယ်အရာကိုထွက်ရှာနှင့်နောက်ကျောငါ့အားဤအချက်အလက်ပေးပို့ပါ။

Ultrix 4.1 (ဤနေရာတွင်န်းကျင်အနည်းဆုံးနောက်ဆုံးပေါ်ဗားရှင်း) 1000000 အထက်၏ကုန်ဆုံးချိန် 0 င်ရန်နှင့်ညီမျှဖြစ်စဉ်းစား။

ဒစ်ဂျစ်တယ် UNIX တွင် 4.0A (နှင့်ဖြစ်နိုင်သည်အခြားဗားရှင်း) ခွဲဝေချထားပေးရန်ဖို့ငြင်းဆန် ptys သင်တစ်ဦး SIGCHLD handler ကိုသတ်မှတ်လျှင်။ ပိုပြီးအင်ဖိုအတွက် grantpt စာမျက်နှာကိုကြည့်ပါ။

ကြိုးစားမှုယခင်ကတစ်စုံတစ်ဦးကအသုံးပြုတဲ့ Pty ခွဲဝေချထားပေးရန်ဖို့မျှော်လင့်ပါလျှင်ဒါ IRIX 6.0 မှန်ကန်စွာ Pty ခွင့်ပြုချက်မကိုင်တွယ်ဘူး, ကပျက်ကွက်။ IRIX 6.1 မှ Upgrade ။

TERM မသတ်မှတ်လျှင် telnet (သာ SunOS 4.1.2 အောက်မှာမှန်ကန်ကြောင်းအတည်ပြု) ဆွဲထားတဲ့။ ဤဝေါဟာရကိုသတ်မှတ်မထားတဲ့ CGI script များ, မှာရှိ cron အောက်တွင်ပြဿနာတစ်ခုဖြစ်ပါတယ်။ ထို့ကြောင့်သင်ကအတိအလင်းထားရှိရမည် - အဘယ်အရာကို type ကိုမှနျအားဖွငျ့ဆီလျှော်သည်။ ဒါဟာတစ်ခုခုသတ်မှတ်ထားခံရဖို့ရှိပါတယ်! အောက်ပါဖြစ်ကောင်းအများဆုံးရောဂါဖြစ်ပွားမှုများအတွက်အဘို့လောက်ပေ။

set env (TERM) vt100

Shell နှင့်မူလစာမျက်နှာသတ်မှတ်မထားလျှင် (သာ BSDI BSD / OS ကို 3.1 i386 အောက်မှာမှန်ကန်ကြောင်းအတည်ပြု) သိကောင်းစရာဆွဲထားတဲ့။ ဤသည်အောက်တွင်ပြဿနာတစ်ခုဖြစ်ပါတယ် cron မှာ၌, cgi , ဤပတ်ဝန်းကျင် variable တွေကိုသတ်မှတ်မထားတဲ့ script များ။ ထို့ကြောင့်သင်ကအတိအလင်းသူတို့ကိုခန့်ထားရမယ် - အဘယ်အရာကို type ကိုမှနျအားဖွငျ့ဆီလျှော်သည်။ ဒါဟာတစ်ခုခုသတ်မှတ်ထားခံရဖို့ရှိပါတယ်! အောက်ပါဖြစ်ကောင်းအများဆုံးရောဂါဖြစ်ပွားမှုများအတွက်အဘို့လောက်ပေ။

env set (SHELL) / bin / sh set ကို env (မူလစာမျက်နှာ) / usr / local / bin

Kernel အား 10 မှ 15 စက္ကန့်အကြာတွင်ဆိုမဖတ်ရသေးသော output ကိုပယ်ရှားပစ်နိုင်အောင်အပြီး ptys အချို့သည် Implementation ကို (အမှန်တကယ်အရေအတွက်ကိုအကောင်အထည်ဖော်မှု-မှီခိုဖြစ်ပါသည်) ဒီဇိုင်းရေးဆွဲနေကြပါတယ် ဖြစ်စဉ်ကို ဖိုင်ကို descriptor ကိုပိတ်ထားလိုက်ပါတယ်။ ထို့ကြောင့်အစီအစဉ်များကဲ့သို့သောမျှော်လင့်

spawn နေ့စွဲအိပ်ပျော်ခြင်း 20 မျှော်လင့်ထား

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

အခြားတစ်ဖက်တွင်, Cray UNICOS ptys ဟာချက်ချင်းအပြီးမည်သည့်မဖတ်ရသေးသော output ကိုစွန့်ပစ် မှုလုပ်ငန်းစဉ် ဖိုင်ကို descriptor ကိုပိတ်ထားလိုက်ပါတယ်။ ငါ Cray ဤအစီရင်ခံခဲ့ကြပြီးသူတို့တစ်တွေပြင်ဆင်ချက်အပေါ်အလုပ်လုပ်ကိုင်နေကြသည်။

တစ်ခါတစ်ရံတစ်ဦးနှောင့်နှေးထိုကဲ့သို့သော TTY interface ကို UART settings ကိုသို့မဟုတ်ကိုက်ညီခြင်းပြောင်းလဲနေတဲ့အခါအဖြစ်တစ်ဦး prompt ကိုနှင့်တုန့်ပြန်အကြားလိုအပ်ပါသည် baud က start / ရပ်တန့်-bits ရှာဖွေနေခြင်းဖြင့်နှုန်းထားများ။ အများအားဖြင့်, ဤအမှုအလုံးစုံတို့ကိုလိုအပ်နေပါသည်တစ်စက္ကန့်သို့မဟုတ်နှစ်ဦးအဘို့အအိပ်ရန်ဖြစ်ပါသည်။ တစ်ဦးကပိုပြီးကြံ့ခိုင် technique ကိုဟာ့ဒ်ဝဲ input ကိုလက်ခံရရှိရန်အဆင်သင့်ဖြစ်နေသည်အထိပြန်ကြိုးစားရန်ဖြစ်ပါတယ်။ အောက်ပါဥပမာကိုနှစ်ဦးစလုံးနည်းဗျူဟာကိုအသုံးပြုသည်:

"r \ မြန်နှုန်း 9600" သို့ပေးပို့; အိပ်စက်ခြင်း 1 {အချိန်ကုန် { "\ r" ပေးပို့မျှော်လင့်ထား; exp_continue} $ prompt ကို}

ထောင်ချောက် -code ထိုကဲ့သို့သောအိပ်ပျော်ခြင်းအဖြစ် TCL ရဲ့ဖြစ်ရပ်သည် loop, ထိုင်ဆို Command ဖြင့်အလုပ်လုပ်မည်မဟုတ်ပေ။ အဆိုပါပြဿနာဖြစ်ရပ်သည် loop အတွက်, TCL async ဖြစ်ရပ်ကိုင်တွယ်ခြင်းမှပြန်လာ codes တွေကို discard လုပ်ဖြစ်ပါတယ်။ ပြသနာကိုကျော်လွှားနိုင်စေရန်ထောင်ချောက်ကုဒ်အတွက်အလံသတ်မှတ်ထားရန်ဖြစ်ပါသည်။ ထို့နောက်ချက်ချင်း command ကိုအပြီး (ဆိုလိုသည်မှာ, အိပ်ပျော်ခြင်း) ကိုအလံစစ်ဆေးပါ။

အဆိုပါ expect_background command ကို -timeout အငြင်းပွားမှုများလျစ်လျူရှုနှင့်အထွေထွေအတွင်းကုန်ဆုံးချိန်မရှိအယူအဆရှိပါတယ်။

& # 34; အရိပ်အမြွက် & # 34 မျှော်လင့်ထား;

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

တစ်ဦးကဘုံပြဿနာ shell ကိုညွန်ပြအသိအမှတ်မပြုဖို့ဘယ်လိုဖြစ်ပြီးမျှော်လင့်ထား။ ဤအချင်းမတူလူများနှင့်ကွဲပြားခြားနားသောခွံများကကွဲပြားခြားနားစိတ်ကြိုက်နေကြသည်ကတည်းကအိတ်ဆောင် rlogin ကို automation သည့် prompt ကိုမသိဘဲခက်ခဲနိုင်ပါတယ်။ တစ်ဦးကကျိုးကြောင်းဆီလျော်စည်းဝေးကြီးတစ်ခုကိုအသုံးပြုသူများပတ်ဝန်းကျင် variable ကို EXPECT_PROMPT ၎င်းတို့၏ prompt ကို (ကအထူးသဖြင့်, အဆုံး) ဖော်ပြပုံမှန်စကားရပ်ကိုသိုလှောင်ထားရှိသည်ဖို့ဖြစ်ပါတယ်။ အောက်ပါကဲ့သို့အကျင့်ထုံးကိုအသုံးပြုနိုင်ပါတယ်။ EXPECT_PROMPT တည်ရှိမပါဘူးဆိုရင်, code ကိုနေတုန်းပဲမှန်မှန်ကန်ကန်လည်ပတ်ကောင်းတစ်ခုအခွင့်အလမ်းရှိပါတယ်။

prompt ကိုသတ်မှတ်ထား "$ (| | #% \\ $)"; # default အ prompt ကိုဖမ်း {set prompt ကို $ env (EXPECT_PROMPT)} -re $ prompt ကိုမျှော်လင့်ထား

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

အများစုမှာညွန်ပြအဆုံးမှာတစ်ဦးအာကာသဇာတ်ကောင်များပါဝင်သည်။ ဥပမာအားဖြင့်, ftp ကနေ prompt ကို '', f ',' t ',' p ','> 'နဲ့ဖြစ်ပါတယ်။ ဒီ prompt ကိုကိုက်ညီစေရန်, သင်တို့သည်ဤဇာတ်ကောင်တစ်ဦးချင်းစီအဘို့အကောင့်ရပါမည်။ ဒါဟာအလွတ်ထည့်သွင်းရန်မဘုံအမှားဖြစ်ပါတယ်။ အတိအလင်းအတွက်အလွတ်ထားပါ။

သငျသညျပုံစံက X * တစ်ပုံစံကိုသုံးပါလျှင်, * အပေါငျးတို့သ output ကိုလက်ခံရရှိသည်လွန်ခဲ့သောအရာမှ X ကို၏အဆုံးကနေလက်ခံရရှိကိုက်ညီပါလိမ့်မယ်။ ဒါဟာထိုးထွင်းသိမြင်အသံပေမယ့်ထားသောစာပိုဒ်တိုများကွန်ပျူတာနှင့် kernel နဲ့ device driver ဟာအားဖြင့် I / O နှစ်ဦးစလုံး၏အပြောင်းအလဲနဲ့၏အမြန်နှုန်းပေါ် မူတည်. အမျိုးမျိုးကွဲပြားနိုင်သည် "နောက်ဆုံးအရာလက်ခံရရှိ" ဘာဖြစ်လို့လဲဆိုတော့အတန်ငယ်ရှုပ်ထွေးစေနိုင်ပါတယ်။

အထူးသဖြင့်လူသားတို့အဖြစ်မှန်အတွက်အများဆုံးအစီအစဉ်များကိုအချိန် output ကိုတဦးတည်းလိုင်းထုတ်လုပ်သည့်အခါအစီအစဉ်ကို output ကိုကြီးမားတုံး (Atom) တွင်ရောက်ရှိလာကြည့်ဖို့လေ့ရှိပါတယ်။ ဒီဖြစ်ရပ်ဖြစ်ပါသည်ယူဆရင်, ထို * ယခင်အပိုဒ်၏ပုံစံသာရှိသောကြောင့်လက်ခံရရှိခဲ့သမျှသော output ကိုသောပွဲစဉ်၏အချိန်မှာပိုပြီးဖြစ်ရှိပုံရသည်သော်လည်းလက်ရှိလိုင်း၏အဆုံးကိုက်ညီလိမ့်မည်။

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

တောင်မှလိုင်း-oriented ကြားခံပေါ် မူတည်. ပညာမဲ့ပါပဲ။ အစီအစဉ်များကိုခဲသူတို့လုပ်ပေးကြားခံအမျိုးအစားအကြောင်းကိုကတိတော်များကိုစေပါဘူး, ဒါပေမယ့်လိုင်းများထင်ရသောကျပန်းသောနေရာများမှာကိုချိုးဖျက်နိုင်အောင် system ကိုရင်တက် output ကိုလိုင်းများကိုချိုးနိုင်မသာ။ သင်တစ်ဦး prompt ကို၏နောက်ဆုံးအနည်းငယ်ဇာတ်ကောင်ဖျောပွနိုငျပါလျှင်ပုံစံများကိုရေးသားသည့်အခါထို့ကြောင့်, ကအဲဒီလိုလုပ်ဖို့ပညာရှိဖြစ်၏။

သင်တစ်ဦးအစီအစဉ်၏နောက်ဆုံး output ကိုတစ်ပုံစံနှင့်အစီအစဉ်အတွက်စောင့်ဆိုင်းနေတယ်ဆိုရင်အစားအခြားအရာတစ်ခုခုကိုထုတ်လွှတ်ပေးပါ, သင်အချိန်ကုန်သော့ချက်စာလုံးနဲ့ detect နိုင်လိမ့်မည်မဟုတ်။ အစားကတစ်ဦး eof အရိပ်အယောင်ရလိမ့်မယ် - အကြောင်းပြချက်ကိုမျှော်လင့် timeout မည်မဟုတ်သောကြောင့်ဖြစ်သည်။ အစားကြောင်းကိုသုံးပါ။ တောင်မှပိုကောင်း, နှစ်ဦးစလုံးကိုအသုံးပြုပါ။ ကြောင်းလိုင်းအစဉ်အဆက်န်းကျင်သို့ပြောင်းရွှေ့လျှင်ထိုလမ်းကိုသင်လိုင်းသူ့ဟာသူတည်းဖြတ်ရန်ရှိသည်လိမ့်မည်မဟုတ်ပါ။

NEWLINE များသောအားဖြင့် linefeed ပာ terminal ကိုယာဉ်မောင်းများကတဲ့အခါမှာ output ကို, ပြန်လာ carriage ကူးပြောင်းနေကြသည်။ သငျသညျ printf ( "foo \ nbar") ဆို, ကနေအတိအလင်းနှစ်ခုလိုင်းများကိုက်ညီမယ့်ပုံစံလိုလျှင်ထို့ကြောင့်, သင်ပုံစံ "foo \ r \ nbar" အသုံးပြုသင့်ပါတယ်။

အသုံးပြုသူအနေဖြင့်ဖတ်ရှုခြင်းတဲ့အခါမှာတစ်ဦးနှင့်ဆင်တူဘာသာပြန်ချက် expect_user ကနေတဆင့်, တွေ့ရှိနိုင်ပါသည်။ သငျသညျအပြန်နှိပ်တဲ့အခါမှာဤကိစ္စတွင်ခုနှစ်,, တက NEWLINE မှဘာသာပြန်ထားသောလိမ့်မည်။ မျှော်လင့်ထို့နောက် (telnet ကဲ့သို့) ကုန်ကြမ်း mode ကိုရန်၎င်း၏ terminal ကိုသတ်မှတ်ပေးသော program တစ်ခုကိုဖြတ်သန်းခဲ့လျှင်အစီအစဉ်ကိုစစ်မှန်တဲ့ပြန်လာမျှော်မှန်းသကဲ့သို့, ပြဿနာတစ်ခုဖြစ်ရှိသွားသည်။ (အချို့အစီအစဉ်များကိုအမှန်တကယ်သူတို့အလိုအလျှောက်ပြန်မှ NEWLINE ဘာသာပြန်ဆိုလိမ့်မယ်, ဒါပေမယ့်အရှိဆုံးမအတွက်အပြစ်လွှတ်ခြင်းနေကြသည်။ ) ကံမကောင်းစွာပဲ program တစ်ခုကုန်ကြမ်း mode သို့ယင်း၏ terminal ကိုသွင်းထားကြောင်းထွက်ရှာစရာလမ်းလည်းမရှိ။

အဲဒီအစားကိုယ်တိုင်ပြန်နှင့်အတူ NEWLINE အစားထိုးထက်, ဖြေရှင်းချက်ဘာသာပြန်ချက်ရပ်တန့်တံ့သော command 'stty ကုန်ကြမ်း "သုံးစွဲဖို့ဖြစ်ပါတယ်။ ဤသူသည်သင်တို့မရှိတော့ချက်ပြုတ်လိုင်း-တည်းဖြတ်ရေး features တွေရမည်ဟုဆိုလိုသည်ကြောင်း, သို့သော်သတိပြုပါ။

ဤပြဿနာကိုပြီးရင်ပေါ်ထွန်းမည်မဟုတ်ဒါလုံးလုံးလြားလြားကုန်ကြမ်း mode ကိုရန်သင့် terminal ကိုသတ်မှတ်ဆက်ဆံ။

ဒါဟာ script များမျှော်လင့်ထားအတွက်စကားဝှက်တွေ (သို့မဟုတ်အခြားပုဂ္ဂလိကသတင်းအချက်အလက်) တွေကိုသိမ်းဆည်းဖို့မကြာခဏအသုံးဝင်သည်။ ကွန်ပျူတာတစ်လုံးတွင်သိမ်းထားသောကြောင်းဘာမှမည်သူမဆိုဝင်ရောက်ခံရခြင်းမှဖြစ်ပေါ်နိုင်တဲ့အတွက်ဒါဟာအကြံပြုသည်မဟုတ်။ ထို့ကြောင့် interactive ဇာတ်ညွှန်းထဲကနေစကားဝှက်များအဘို့သတိပေးစာသားသူတို့ကိုမြှုပ်ထားခြင်းထက်တစ်စမတ်စိတ်ကူးဖြစ်ပါတယ်။ မည်သို့ပင်ဆိုစေ, တခါတရံတွင်ထိုကဲ့သို့သော embedding တစ်ခုတည်းသောဖြစ်နိုင်ချေဖြစ်ပါတယ်။

ကံမကောင်းစွာပဲအဆိုပါ UNIX တွင်ဖိုင်စနစ်ကဟာ executable ပေမယ့်ဖတ်လို့မရအောင်သော script များအတွက်မျှတိုက်ရိုက်လမ်းရှိပါတယ်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်း setgid shell ကို script များကိုထောက်ပံ့ပေးသောစနစ်များကိုသွယ်ဝိုက်ဒီတူအောင်ဖန်တီးနိုင်တယ်:

ခါတိုင်းလိုအဖြစ် (ထိုလျှို့ဝှက်ချက်ကိုဒေတာများပါဝင်သည်) ကိုမျှော်လင့် script ကိုဖန်တီးပါ။ ၎င်း၏ခွင့်ပြုချက် (--- -rwxr-x) ကို 750 ဖြစ် Make နှင့်တစ်ဦးယုံကြည်စိတ်ချအုပ်စု, ဆိုလိုသည်မှာဖတ်ခွင့်ပြုခဲ့သောအဖွဲ့တစ်ဖွဲ့ကပိုင်ဆိုင်။ လိုအပ်သောလျှင်, ဤရည်ရွယ်ချက်အဘို့အုပ်စုအသစ်ဖန်တီးပါ။ (- x ကို -rwxr-s) ကိုအရင်ကဲ့သို့တူညီသောအုပ်စုတစ်စုကပိုင်ဆိုင်ထို့နောက်ခွင့်ပြုချက် 2751 နှင့်အတူတစ်ဦး / bin / sh script ကိုဖန်တီးပါ။

အဆိုပါရလဒ်မည်သူမဆိုကွပ်မျက်ခံရ (နှင့်ဖတ်ပါ) စေခြင်းငှါအရာတစ်ဦး script ဖြစ်ပါတယ်။ မဖြစ်၏အခါ, ကမျှော်လင့် script ကို run ပေးနိုင်ပါတယ်။

& # 34; လည်း & # 34 မှာဖတ်ကြည့်ပါ,

TCL (3), libexpect (3)
"မျှော်လင့်ထား Exploring: Automation Interactive မှ Programs ကိုတစ် TCL-အခြေခံပြီး Toolkit ကို" ။ ဒွန် Libes, စစခြင်းဖြင့် 602, ISBN 1-56592-090-2, O'Reilly နှင့် Associates မှ 1995 ။
"မျှော်လင့်ထား: interactive ၏သူများသည်ပုန်ကန်တတ်သောအမျိုးကိုက်ညီကုသ" ဒွန် Libes, နွေရာသီ 1990 USENIX ညီလာခံ, Anaheim ကယ်လီဖိုးနီးယား, ဇွန် 11-15, 1990 တရားစွဲဆိုထားသဖြင့်။
ဒွန် Libes, 1990 USENIX အကြီးစားတပ်ဆင်စနစ်များအုပ်ချုပ်ရေးညီလာခံ, ကော်လိုရာဒို Springs, ကော်လိုရာဒို, အောက်တိုဘာလ 17-19, 1990 တရားစွဲဆိုထားသဖြင့် "စနစ်အုပ်ချုပ်ရေးတာဝန်များအလိုအလျောက်မျှော်လင့်အသုံးပြုခြင်း" မ။
မ "TCL: တစ်ခုထည့်သွင်းနိုင်တဲ့စစ်ဌာနချုပ်ဘာသာစကား", ယောဟန် Ousterhout, ဆောင်းရာသီ 1990 USENIX ညီလာခံ, ဝါရှင်တန်ဒီစီ၏ရှေ့ဆက်မည်ဇန်နဝါရီလ 22-26, 1990..I "မျှော်လင့်ထား: မျဉ်းအောက် Interactive မှ Programs ကိုများအတွက် Scripts" ကဒွန် Libes, ကွန်ပျူတာစနစ်များအားဖြင့် , Vol ။ ဒွန် Libes, နွေရာသီ 1992 USENIX ညီလာခံ, စစ၏တရားစွဲဆိုထားသဖြင့် 4, အမှတ် 2, ကယ်လီဖိုးနီးယားစာနယ်ဇင်းဂျာနယ်များတက္ကသိုလ်, နိုဝင်ဘာလ 1991..I "Regression Testing နှင့်ကိုက်ညီစမ်းသပ်ခြင်း Interactive မှ Programs ကို" ။ 135-144, San Antonio တွင်, တက္ကဆပ်, ဇွန်လ 12-15, 1992..I "Kibitz - အတူတကွအကွိမျမြားစှာ Interactive မှ Programs ကိုချိတ်ဆက်ခြင်း" ဒွန် Libes, ဆော့ဝဲအသုံးပြုပုံ - အလေ့အကျင့် & လုပ်ငန်းအတွေ့အကြုံများ, ယောဟနျသ Wiley & သားအနောက် Sussex, အင်္ဂလန်, Vol ။

ဒွန် Libes, 1993 TCL / Tk အလုပ်ရုံဆွေးနွေးပွဲ, Berkeley,, CA, ဇွန်လ 10-11, 1993 တရားစွဲဆိုထားသဖြင့် 23, အမှတ် 5, မေလ, 1993..I "TCL Applications ကိုတစ် Debugger" ။

က AUTHOR

ဒွန် Libes, စံချိန်စံညွှန်းအမျိုးသားအင်စတီကျုနှင့်နည်းပညာ

ဝန်ခံချက်

လှုံ့ဆော်မှုများအတွက် TCL ဘို့ယောဟနျသ Ousterhout, နှင့် Scott Paisley မှကျေးဇူးတင်ပါတယ်။ အဘို့ရော့ Savoye မှကျေးဇူးတင်ပါသည်ရဲ့နေရာများအလိုအလျောက်ဖွဲ့စည်းပုံကုဒ်မျှော်လင့်။

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

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