Il-Kmand Linux / Unix Jistenna

Jistennew huwa programm li jitkellem ma 'programmi interattivi oħra skont skrittura. Wara l-iskript, Spetta jaf x'jista 'jkun mistenni minn programm u x'inhi r-risposta korretta. Lingwa interpretata tipprovdi strutturi ta 'kontroll ta' fergħat u ta 'livell għoli biex jidderieġu d-djalogu. Barra minn hekk, l-utent jista 'jieħu kontroll u jinteraġixxi direttament meta jkun mixtieq, wara jirritorna l-kontroll għall-iskrittura.

Expectk hija taħlita ta 'Espera u Tk. Dan iġib ruħu eżatt u jistenna t-Tk. Jistennew ukoll li jistgħu jintużaw direttament f'C jew C + + mingħajr Tcl.

L-isem "Jistenna" ġej mill-idea li tibgħat / tistenna sekwenzi popolarizzati minn programmi ta 'kontroll tal-modem uucp, kermit u oħrajn. Madankollu, b'differenza mill-uucp, Spetta huwa ġeneralizzat sabiex ikun jista 'jitmexxa bħala kmand tal-utent b'kull programm u kompitu f'moħħu. Jistenna li tista 'tkellem ma' bosta programmi fl-istess ħin.

X'tistenna Nistgħu Nagħmlu

Per eżempju, hawn huma xi affarijiet li l-kmand jistenna jista 'jagħmel:

Hemm varjetà ta 'raġunijiet għaliex il- qoxra ma tistax twettaq dawn il-kompiti. Kollha huma possibbli b'Espett.

B'mod ġenerali, Stenna hija utli għat-tmexxija ta 'kwalunkwe programm li jeħtieġ interazzjoni bejn il-programm u l-utent. Dak kollu li hu meħtieġ huwa li l-interazzjoni tista 'tiġi kkaratterizzata b'mod programmatiku. Jistenna li jista 'wkoll jagħti lura l-kontroll lill-utent mingħajr ma twaqqaf il-programm ikkontrollat. Bl-istess mod, l-utent jista 'jirritorna l-kontroll għall-iskrittura f'kull ħin.

Użu

Jistenna li jaqra cmdfile għal lista ta 'kmandi biex tesegwixxi. Jistennew jistgħu jiġu invokati impliċitament fuq sistemi li jappoġġaw il-#! notazzjoni billi timmarka l-iskritt bħala eżegwibbli u tagħmel l-ewwel linja fl-iskritt:

#! / usr / local / bin / jistenna -f

Naturalment, it-triq trid tiddeskrivi b'mod preċiż fejn tistenna l-ħajja. / usr / local / bin huwa biss eżempju.

Il-bandiera -c tippreferi kmand li għandu jiġi eżegwit qabel kwalunkwe fl-iskrittura. Il-kmand għandu jiġi kkwotat biex ma jinqasamx mill-qoxra. Din l-għażla tista 'tintuża diversi drabi. Kmandi multipli jistgħu jiġu eżegwiti b'kanal waħdieni billi jiġu separati b'punt u virgola. L-ordnijiet huma eżegwiti fl-ordni li jidhru. Meta tuża Expectk, din l-għażla hija speċifikata bħala -komanda.

Il-bandiera -D tippermetti xi produzzjoni djanjostika, li primarjament tirrapporta l-attività interna ta 'kmandi bħal tistenna u taġixxi. Dan il-bandiera għandu l-istess effett bħal "exp_internal 1" fil-bidu ta 'script ta' Espera, flimkien mal-verżjoni ta 'Espera hija stampata.

Il-bandiera-D tippermetti depuġġatur interattiv. Għandha ssegwi valur ta 'numru sħiħ. Id-deputatur jieħu kontroll qabel il-proċedura Tcl li jmiss jekk il-valur huwa nieqes jew jekk a ^ C hija ppressata jew jintlaqat punt ta 'waqfien, jew kmand ieħor xieraq ta' debugger jidher fl-iskritt. Meta tuża Expectk, din l-għażla hija speċifikata bħala - Debug.

Il-bandiera-prefere prefess fajl li minnu jaqra kmandi. Il-bandiera nfisha hija fakultattiva peress li hija utli biss meta tuża n-numru! notazzjoni, sabiex argumenti oħra jistgħu jiġu pprovduti fil-linja tal-kmand. Meta tuża Expectk, din l-għażla hija speċifikata bħala -file.

B'mod awtomatiku, il-fajl tal-kmand jinqara fil- memorja u jitwettaq fl-intier tiegħu. Huwa okkażjonalment mixtieq li jaqra fajls linja waħda kull darba. Sabiex il-fajls arbitrarji jiġu mġiegħla jiġu mmaniġġjati b'dan il-mod, uża l-bandiera-b. Meta tuża Expectk, din l-għażla hija speċifikata bħala -buffer.

Jekk is-sekwenza "-" hija fornuta bħala isem tal-fajl, minflok tinbidel input standard. Uża "./-" biex taqra minn fajl fil-fatt imsejjaħ "-".

Il-bandiera -i toħloq Eċċezza li tħeġġeġ b'mod interattiv għall-kmandi minflok ma tinqara minn fajl. It-twissija tintemm permezz tal-kmand tal-ħruġ jew fuq l-EOF. Il-bandiera -i hija preżunta jekk la l-fajl tal-kmand u lanqas -c ma jintużaw. Meta tuża Expectk, din l-għażla hija speċifikata bħala -interattiv.

- jistgħu jintużaw biex jiddelimitaw it-tmiem tal-għażliet. Dan huwa utli jekk trid tgħaddi l-argument ta 'għażla għall-kitba tiegħek mingħajr ma tiġi interpretata minn Espera. Dan jista 'jitqiegħed b'mod utli fil-kaxxa #! linja biex tipprevjeni kwalunkwe interpretazzjoni tal-bandiera minn Expect. Pereżempju, dawn li ġejjin se jħallu l-argumenti oriġinali inkluż l-isem tal-iskritt fil-varjabbli argv .

#! / usr / local / bin / jistenna -

Innota li l- konvenzjonijiet tas-soltu getopt (3) u execve (2) għandhom jiġu osservati meta jiżdiedu l-argumenti għall-#! linja.

Il-fajl $ exp_library / expect.rc jinxtara awtomatikament jekk preżenti, sakemm ma tintużax il-bandiera -N. (Meta tuża Expectk, din l-għażla hija speċifikata bħala -NORC.) Immedjatament wara dan, il-fajl ~ / .expect.rc jinxtara awtomatikament, sakemm ma tintużax il-bandiera -n. Jekk il-varjabbli ta 'l-ambjent DOTDIR huwa definit, huwa trattat bħala direttorju u .expect.rc jinqara minn hemm. Meta tuża Expectk, din l-għażla hija speċifikata bħala -norc. Din l-akkwist sseħħ biss wara li teżegwixxi kwalunkwe bandiera -c.

-v kawżi Jistenna li jistampa n-numru u l-ħruġ tal-verżjoni tiegħu. Il-bandiera korrispondenti f'Expectk, li tuża ismijiet ta 'bandiera twila, hija -versjoni.

Args fakultattivi huma mibnija f'lista u maħżuna fil-varjabbli msemmija argv u. argc huwa inizjalizzat għat-tul ta 'argv.

Argv0 huwa definit bħala l-isem ta 'l-iskritt jew binarju jekk ma tintuża l-ebda kitba. Pereżempju, l-istampi li ġejjin jelenkaw l-isem tal-iskritt u l-ewwel tliet argumenti:

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

Kmandi

Jistenna li juża l-Lingwa tal-Kmand tal-Għodda Tcl jipprovdi fluss ta 'kontroll (jekk, għal, waqfa), l-evalwazzjoni ta' l-espressjoni u bosta fatturi oħra bħar-rikorsjoni u d-definizzjoni tal-proċedura. Kmandi użati hawn iżda mhux definiti (sett, jekk, exec) huma kmand Tcl. Jistenna li jappoġġja kmandi addizzjonali. Sakemm ma jkunx speċifikat mod ieħor, il-kmandi jirritornaw is-sekwenza vojta.

L-ordnijiet huma elenkati alfabetikament sabiex ikunu jistgħu jinstabu malajr. Madankollu, utenti ġodda jistgħu jsibuha aktar faċli biex jibdew billi jaqraw id-deskrizzjonijiet ta 'spawn, jibagħtu, jistennew u jinteraġixxu, f'dak l-ordni.

qrib [-slave] [-onexec 0 | 1] [-i spawn_id]

jagħlaq il-konnessjoni mal- proċess kurrenti. Il-biċċa l-kbira tal-programmi interattivi ser jiskopru EOF fuq l-istdin u l-ħruġ tagħhom; għalhekk qrib normalment ikun biżżejjed biex joqtol il- proċess ukoll. Il-bandiera -i tiddikjara li l- proċess jagħlaq li jikkorrispondi mal-spawn_id imsemmija.

It-tnejn jistennew u jinteraġixxu se jindunaw meta l- proċess kurrenti joħroġ u impliċitament jagħlqu, imma jekk joqtlu l- proċess billi, ngħidu aħna, "eżekut joqtol $ pid", trid espliċitament tagħlaq mill-qrib .

Il-bandiera li tispiċċa tiddetermina jekk id-spawn id hijiex magħluqa fi kwalunkwe proċess ġdid imġedded jew jekk il- proċess huwiex minsuġa. Biex tħalli spawn id miftuħ, uża l-valur 0. Valur ta 'numru sħiħ mhux żero jġiegħel il-spawn magħluq fi kwalunkwe proċess ġdid.

Il-bandiera tas-silġ tagħlaq l-iskjavi assoċjata mal-id spawn. Meta l-konnessjoni hija magħluqa, l-iskjavi hija awtomatikament magħluqa wkoll jekk tkun għadha miftuħa.

Ma jimpurtax jekk il-konnessjoni hijiex magħluqa b'mod impliċitu jew espliċitu, għandek ċċempel stenna biex tnaddaf is-slot tal- proċess tal- qalba korrispondenti. Il-kmand mill-qrib ma jsejjaħx stenna peress li m'hemm l-ebda garanzija li l-għeluq ta 'konnessjoni ta' proċess iwassal biex toħroġ.

debug [[-now] 0 | 1]

tikkontrolla depuratur Tcl li jippermettilek tgħaddi minn dikjarazzjonijiet u twaqqaf breakpoints.

Bl-ebda argument, 1 jiġi rritornat jekk id-debuttant ma jaħdimx, inkella jiġi rritornat 0.

B'argument 1, id-debugger jibda. Bil-argument 0, il-debugger jitwaqqaf. Jekk argument 1 ikun preċedut mill-bandiera -now, il-debugger jinbeda immedjatament. Inkella, id-debugger jibda bid-dikjarazzjoni Tcl li jmiss.

Il-kmand tad-debug ma jbiddilx nases. Qabbel dan biex tibda tistenna bil-bandiera -D.

Il-kmand ta 'skonnettjar jiskonnettja proċess imbattal mit- terminal . Hija tkompli għaddejja fl-isfond. Il-proċess jingħata l-grupp ta 'proċess tiegħu stess. L-I / O standard huwa ridirettament lejn / dev / null .

L-użi tal-frammenti li ġejjin jiskonnettjaw biex ikomplu jmexxu l-iskritt fl-isfond.

jekk {[fork]! = 0} ħruġ skonnettja. . .

L-iskritt li ġej jaqra password u imbagħad imexxi programm kull siegħa li jitlob password kull darba li jkun imexxi. L-iskrittura jipprovdi l-password sabiex ikollok biss it-tip darba.

send_user "password? \" expect_user -re "(. *) \ n" għal {} 1 {} {jekk {[fork]! = 0} (sleep 3600; ikompli) skonnettja priv_prog spapp jistennew il-Password: ibgħat "$ expect_out ( 1, sekwenza) ". . . ħruġ}

Vantaġġ li tuża skonnettja fuq il-karatteristika tal-proċess tal-qoxra mhux sinkroniku (&) huwa li tistenna tista 'tiffranka l-parametri tat-terminal qabel ma taqleb u mbagħad tapplikahom għal ptys ġodda. Ma '&, Spettak ma jkollux iċ-ċans li jaqra l-parametri tat-terminal peress li t-terminal diġà huwa skonnettjat mill-ħin li Espera tirċievi l-kontroll.

ħruġ [-opts] [status]

jikkawża li wieħed jistenna li joħroġ jew inkella jipprepara biex jagħmel dan.

Il-bandiera li tgħaqqad tikkawża li l-argument li jmiss jintuża bħala maniġer tal-ħruġ. Mingħajr argument, il-maniġer tal-ħruġ attwali jiġi rritornat.

Il-bandiera NoExit twassal biex tistenna li tħejji biex toħroġ iżda ma tibqax fil-fatt tirritorna l-kontroll għas-sistema operattiva. Il-maniġer tal-ħruġ definit mill-utent jitħaddem kif ukoll il-maniġers interni stess ta 'Expect. M'għandhomx isiru aktar kmandi ta 'Jistennew. Dan huwa utli jekk inti qed taħdem Jistennew ma 'estensjonijiet Tcl oħra. L-interpretu kurrenti (u t-tieqa prinċipali jekk fl-ambjent Tk) jibqgħu hekk li estensjonijiet Tcl oħra jistgħu jnaddfu. Jekk il- ħruġ ta 'Expect jiġi msejjaħ mill-ġdid (madankollu dan jista' jseħħ), il-maniġers ma jerġgħux isiru.

Meta joħorġu, il-konnessjonijiet kollha mal-proċessi mġedda huma magħluqa. L-għeluq se jiġi identifikat bħala EOF permezz ta 'proċessi ta' produzzjoni. il-ħruġ ma jieħu l-ebda azzjoni oħra lil hinn minn dak li tagħmel il-proċedura normali ta 'ħruġ (2). Għalhekk, il-proċessi mġedda li ma jikkontrollawx għal EOF jistgħu jkomplu jaħdmu. (Varjetà ta 'kundizzjonijiet huma importanti biex jiġi ddeterminat, pereżempju, liema sinjali jintbagħat proċess imwessa', iżda dawn huma dipendenti fuq is-sistema, tipikament iddokumentati taħt il-ħruġ (3). Proċessi spawned li jkomplu jiddekorru ser jintirtu minn init.

L-istatus (jew 0 jekk mhux speċifikat) huwa rritornat bħala l-istatus tal-ħruġ ta ' Epect . il-ħruġ jiġi impliċitament eżegwit jekk tintlaħaq it-tmiem tal-iskritt.

exp_continue [-continue_timer]
Il-kmand exp_continue jippermetti jistenna lilu nnifsu biex ikompli jesegwixxi aktar milli jirritorna kif normalment ikun. B'mod default exp_continue jerġa ' jġedded il -timeout timer. Il-bandiera l-aktar kontinwa ma tħallix li l-arloġġ jerġa 'jinbeda. (Ara l- istennija għal aktar informazzjoni).

valur exp_internal [-f file]
jikkaġuna aktar kmandi biex jibagħtu informazzjoni dijanjostika interna għal Eċċezzjonata li tistrieħ jekk il- valur ma jkunx żero. Din l-output hija diżattivata jekk il- valur huwa 0. L-informazzjoni dijanjostika tinkludi kull karattru riċevut, u kull tentattiv magħmul biex jaqbel mal-produzzjoni kurrenti kontra l-mudelli.

Jekk il- fajl fakultattiv jiġi pprovdut, l-output normali u tal-debugging jinkiteb għal dak il-fajl (irrispettivament mill-valur tal- valur ). Kwalunkwe fajl dijanjostiku ta 'riżultat preċedenti huwa magħluq.

Il-bandiera ta 'l-informazzjoni tikkawża exp_internal biex tirritorna deskrizzjoni ta' l-aktar argumenti reċenti mhux ta 'l-informazzjoni mogħtija.

exp_open [args] [-i spawn_id]
jirritorna identifikatur tal-fajl Tcl li jikkorrispondi mad-id spawn oriġinali. L-identifikatur tal-fajl jista 'mbagħad jintuża daqs li kieku nfetħet mill-kmand miftuħ ta' Tcl. (L-id spawn m'għandux jibqa 'jintuża. A stenna m'għandhiex tiġi esegwita.

Il-bandiera ta ' Leaveopen tħalli l-spawn id miftuħa għall-aċċess permezz tal-kmandi Expect. A stenna trid tkun esegwita fuq id spawn.

exp_pid [-i spawn_id]
jirritorna l-id tal-proċess li jikkorrispondi mal-proċess preżentat bħalissa. Jekk tintuża l-bandiera -i , ir-ritorn tal- pid jikkorrispondi għal dak tal-id spawn.

exp_send
hija alias biex tibgħat .

exp_send_error
huwa magħruf għal send_error .

exp_send_log
hija alias għal send_log .

exp_send_tty
huwa alias għal send_tty .

exp_send_user
huwa alias għal send_user .

exp_version [[-exit] version]
hija utli biex tassigura li l-iskritt huwa kompatibbli mal-verżjoni attwali ta 'Espera.

Bl-ebda argument, il-verżjoni attwali ta ' Espera tiġi rritornata. Din il-verżjoni tista 'mbagħad tkun kodifikata fl-iskrittura tiegħek. Jekk tassew taf li m'intix qed tuża karatteristiċi ta 'verżjonijiet reċenti, tista' tispeċifika verżjoni ta 'qabel.

Il-verżjonijiet jikkonsistu fi tliet numri separati minn tikek. L-ewwel huwa n-numru ewlieni. Skripts bil-miktub għal verżjonijiet ta ' Eżitu b'numru kbir differenti kważi ċertament mhux se jaħdem. exp_version jirritorna żball jekk in-numri ewlenin ma jaqblux.

It-tieni huwa n-numru minuri. Skripts miktuba għal verżjoni b'numru minuri akbar mill-verżjoni kurrenti jistgħu jiddependu fuq xi karatteristika ġdida u jistgħu ma jkomplux. exp_version jirritorna żball jekk in-numri maġġuri jaqblu, iżda n-numru minuri b'kitba huwa akbar minn dak ta 'l- Eżekuttiv ta' tħaddim.

It-tielet huwa numru li m'għandu l-ebda parti fil-paragun tal-verżjoni. Madankollu, din tiżdied meta d-distribuzzjoni tas-softwer Expect tinbidel b'xi mod, bħal permezz ta 'dokumentazzjoni jew ottimizzazzjoni addizzjonali. Huwa reset għal 0 fuq kull verżjoni minuri ġdida.

Bil-bandiera ta 'l- eżitu , Espediex timmarka żball u toħroġ jekk il-verżjoni hija skaduta.

jistennew [[-opts] pat1 body1] ... [-opts] patn [bodyn]
tistenna sakemm wieħed mill-mudelli jaqbel mal-ħruġ ta 'proċess imwessa', għadda perjodu ta 'żmien speċifikat, jew jidhru tmiem tal-fajl. Jekk il-korp finali jkun vojt, jista 'jitħalla barra.

Disinji mill-kmand tal- istennija l -aktar riċenti qabel jintużaw b'mod impliċitu qabel kwalunkwe mudell ieħor. Disinji mill-kmand tal- istennija l -aktar reċenti huma impliċitament użati wara kwalunkwe mudell ieħor.

Jekk l-argumenti għad-dikjarazzjoni kollha ta ' stennija jeħtieġu aktar minn linja waħda, l-argumenti kollha jistgħu jkunu "armati" f'wieħed sabiex jevitaw li jtemmu kull linja b'lash backslash. F'dan il-każ wieħed, is-sostituzzjonijiet Tcl tas-soltu jseħħu minkejja ċ-ċingi.

Jekk mudell huwa l-keyword eof , il-korp korrispondenti jiġi eżegwit mal-aħħar tal-fajl. Jekk mudell huwa l- ħin ta 'skadenza tal- kelma prinċipali, il-korp korrispondenti jiġi eżegwit meta jintemm. Jekk ma tintuża l-ebda keyword ta 'timeout, azzjoni nulla impliċita tiġi eżegwita meta jintemm. Il-perjodu ta 'timeout default huwa ta' 10 sekondi imma jista 'jiġi ssettjat, pereżempju għal 30, bil-kmand "sett ta' timeout 30". Ħin infinit jista 'jiġi nominat bil-valur -1. Jekk mudell huwa l- inadempjenza tal- kelma prinċipali, il-korp korrispondenti jiġi eżegwit fuq iż-żmien jew it-tmiem tal-fajl.

Jekk mudell jaqbel, allura l-korp korrispondenti jiġi eżegwit. jistenna li jirritorna r-riżultat tal-ġisem (jew il-sekwenza vojta jekk ma jkunx hemm mudell imqabbel). Fil-każ li mudelli multipli jaqblu, dik li tidher l-ewwel tintuża biex tagħżel korp.

Kull darba li tasal il-produzzjoni l-ġdida, hija mqabbla ma 'kull mudell fl-ordni li huma elenkati. Għalhekk, tista 'tittestja għan-nuqqas ta' taqbila billi tagħmel l-aħħar mudell xi ħaġa garantita li tidher, bħal fil-pront. F'sitwazzjonijiet fejn mhemmx fil-pront, għandek tuża ż- żmien ta ' skadenza (bħalma kieku kieku kienet qed taġixxi manwalment).

Disinji huma speċifikati fi tliet modi. B'mod awtomatiku, il-mudelli huma speċifikati bħal fil-każ tal-kmand tal- logħbiet tat- tajjar. (Mudelli bħal dawn huma simili wkoll għall - espressjonijiet regolari tal-qoxra C normalment imsejħa mudelli "glob"). Il-bandiera ta ' " flag flag" tista' tintuża biex tipproteġi mudelli li jistgħu jaqblu ma 'l- istediniet li jistennew li jagħmlu dan. Kwalunkwe mudell li jibda b '"-" għandu jkun protett b'dan il-mod. (Il-kordi kollha li jibdew b '"-" huma riservati għal għażliet futuri.)

Per eżempju, il-framment li ġej iħares għal login ta 'suċċess. (Innota li l- abort huwa preżunt li hu proċedura definita x'imkien ieħor fl-iskrittura).

jistenna (busy {tqiegħed busy \ n; exp_continue} naqset milli tbattal "password invalida" abort timeout abort konnessi}

Il-kwotazzjonijiet huma meħtieġa fuq ir-raba 'mudell peress li fih spazju, li kieku jissepara d-disinn mill-azzjoni. Disinji bl-istess azzjoni (bħat-3 u r-4) jeħtieġu li jerġgħu jelenkaw l-azzjonijiet. Dan jista 'jkun evitat bl-użu ta' mudelli stil ta 'regexp (ara hawn taħt). Aktar informazzjoni dwar il-formazzjoni ta 'mudelli ta' stil globu tista 'tinstab fil-manwal Tcl.

Il-mudelli ta 'stil Regexp isegwu s-sintassi definita mir- regexp ta' Tcl (qasir għal "espressjoni regolari") kmand. mudelli regexp huma introdotti bil-bandiera -re . L-eżempju ta 'qabel jista' jerġa 'jinkiteb bl-użu ta' regexp bħala:

jistenna (busy {tqiegħed busy \ n; exp_continue} -re "naqset | password invalida" abort timeout abort konnessi}

Iż-żewġ tipi ta 'mudelli huma "mhux iggwadanjati". Dan ifisser li x-xejriet m'għandhomx għalfejn jaqblu mas-sekwenza kollha, iżda jistgħu jibdew u jispiċċaw il-logħbiet kullimkien fis-sekwenza (sakemm kull ħaġa oħra taqbel). Uża ^ biex tqabbel il-bidu ta 'sekwenza, u $ biex jaqblu mat-tarf. Innota li jekk ma tistenna t-tmiem ta 'sekwenza, it-tweġibiet tiegħek jistgħu faċilment jispiċċaw fin-nofs tas-sekwenza peress li dawn huma riflessi mill-proċess imwessa'. Filwaqt li għadha tipproduċi riżultati korretti, l-output jista 'jidher mhux naturali. Għalhekk, l-użu ta '$ huwa mħeġġeġ jekk tista' tiddeskrivi eżattament il-karattri fit-tmiem ta 'sekwenza.

Innota li f'ħafna edituri, l-^ u $ jaqblu mal-bidu u t-tmiem tal-linji rispettivament. Madankollu, minħabba li jistennew li mhumiex orjentati lejn il-linja, dawn il-karattri jaqblu mal-bidu u t-tmiem tad-dejta (kuntrarju għal-linji) attwalment fil-jistennew li jlaqqgħu l-buffer. (Ukoll, ara n-nota hawn taħt dwar "indiġestjoni tas-sistema.")

Il-bandiera ta 'l- eks tikkawża li t- tqabbil jiġi mqabbel bħala sekwenza "eżatta". Ma ssir l-ebda interpretazzjoni ta '*, ^, eċċ (għalkemm il-konvenzjonijiet tas-soltu Tcl għadhom iridu jiġu osservati). Il-mudelli eżatti huma dejjem bla effett.

Il- mappa ta 'nocase tikkawża karattri b'żewġ kanzunetti tal-ħruġ biex tqabbel bħallikieku kienu karattri żgħar. Il-mudell mhuwiex affettwat.

Filwaqt li l-output tal-qari, iktar minn 2000 byte jista 'jġiegħel "bytes" preċedenti ta' bytes. Dan jista 'jinbidel bil- match_max tal- funzjoni. (Innota li l-valuri eċċessivament kbar jistgħu jnaqqsu l-qatgħa tad-disinn.) Jekk patlist hija full_buffer , il-korp korrispondenti jiġi eżegwit jekk match_max bytes ġew riċevuti u l-ebda mudelli oħra ma ġew imqabbla. Jekk jintuża l- keyword full_buffer jew le, il-karattri minsija huma miktuba biex jistenna_out (buffer).

Jekk il-keyword huwa n- null , u n-nullijiet huma permessi (permezz tal-kmand remove_nulls ), il-korp korrispondenti jiġi eżegwit jekk ikun hemm matching ASCII 0 wieħed. Mhux possibbli li tingħaqad 0 bytes permezz ta 'mudelli glob jew regexp.

Meta tqabbel mudell (jew eof jew full_buffer), kwalunkwe output li jaqbel u li qabel ma kienx imqabbel ġie ffrankat fil-variable expect_out (buffer) . Sa 9 partiti ta 'sottotagħqija regexp jiġu ffrankati fil-varjabbli expect_out (1, string) permezz expect_out (9, string) . Jekk il-bandiera ta ' indiċijiet tintuża qabel mudell, l-indiċijiet tal-bidu u tat-tmiem (f'forma adattata għall- arranġament ) tal-10 kordi huma maħżuna fil-varjabbli expect_out (X, start) u expect_out (X, end) fejn X huwa ċifra, jikkorrispondi mal-pożizzjoni tas-sottotaqsima fil-buffer. 0 tirreferi għal kordi li jaqblu mal-mudell kollu u hija ġġenerata għal mudelli glob kif ukoll mudelli regexp. Per eżempju, jekk proċess ipproduċa produzzjoni ta '"abcdefgh \ n", ir-riżultat ta':

jistennew "cd"

huwa daqs li kieku l-istqarrijiet li ġejjin kienu eżegwiti:

sett expect_out (0, string) cd sett expect_out (buffer) abcd

u "efgh \ n" jitħalla fil-buffer tal-ħruġ. Jekk proċess jipproduċi l-output "abbbcabkkkka \ n", ir-riżultat ta ':

jistennew -indiċi -re "b (b *). * (k +)"

huwa daqs li kieku l-istqarrijiet li ġejjin kienu eżegwiti:

sett expect_out (0, start) 1 sett expect_out (0, end) 10 sett expect_out (0, string) bbbcabkkkk sett expect_out (1, start) 2 sett expect_out (1, end) 3 sett expect_out (1, string) bb set expect_out (2, bidu) 10 sett expect_out (2, tmiem) 10 sett expect_out (2, sekwenza) k sett expect_out (buffer) abbbcabkkkk

u "a \ n" jitħalla fil-buffer tal-ħruġ. Il-mudell "*" (u -re ". *") Se jifflaxxja l-buffer tal-output mingħajr ma jaqra aktar output mill-proċess.

Normalment, il-produzzjoni mqabbla tintrema mill-buffers interni ta 'Expect. Dan jista 'jiġi evitat billi jiġi prefixat mudell bix- sinjal li ma jittrasferix . Dan il-bandiera huwa speċjalment utli fl-esperimentazzjoni (u jista 'jkun imqassar għal "-not" għal konvenjenza waqt li jesperimenta).

L-id spawn assoċjata mal-output li tqabbel (jew eof jew full_buffer) hija maħżuna fil expect_out (spawn_id) .

Il-bandiera ta ' żmien itwal ma tikkawżax il-kmand tal-istennija attwali li tuża l-valur li ġej bħala ħin ta' skadenza minflok tuża l-valur tal-varjabbli ta 'skadenza.

B'mod awtomatiku, il-mudelli huma mqabbla mal-produzzjoni mill-proċess kurrenti, iżda l-bandiera -i tiddikjara li l-produzzjoni mil-lista msemmija spawn_id tkun imqabbla ma 'kwalunkwe mudell li ġej (sal-next -i ). Il-lista spawn_id għandha tkun jew lista separata ta 'spawn_ids ta' spazju fuq il-bozza jew varjabbli li jirreferu għal din il-lista ta 'spawn_ids.

Pereżempju, l-eżempju li ġej jistenna "konness" mill-proċess kurrenti, jew "okkupat", "naqas" jew "password invalida" mill-spawn_id imsemmi minn $ proc2.

jistennew {-i $ proc2 busy {tpoġġi busy \ n; exp_continue} -re "naqset | password invalida" abort timeout abort konnessi}

Il-valur tal-varjabbli globali any_spawn_id jista 'jintuża biex jgħaqqad il-mudelli ma' kwalunkwe spawn_ids li jissemmew mal-bnadar l-oħra -i fil-kmand ta ' stennija attwali. Il-spawn_id minn bandiera -i mingħajr disinn assoċjat (jiġifieri, segwit immedjatament minn ieħor -i ) huwa disponibbli għal kwalunkwe mudell ieħor fl-istess kmand tal- istennija assoċjat ma ' xi_spawn_id.

Il-bandiera -i tista 'wkoll tinnomina varjabbli globali f'liema każ il-varjabbli tinqara għal-lista ta' ids spawn. Il-fattur varjabbli huwa reread kull meta tinbidel. Dan jipprovdi mod kif tinbidel is-sors I / O waqt li l-kmand ikun qed jitwettaq. L-ids tal-spawn provduti b'dan il-mod jissejħu ids "indiretti".

Azzjonijiet bħal break u jkomplu jikkawżaw strutturi ta 'kontroll (jiġifieri, għal , proc ) li jġibu ruħhom bil-mod normali. Il-kmand exp_continue jippermetti jistenna lilu nnifsu biex ikompli jesegwixxi aktar milli jirritorna kif normalment ikun.

Dan huwa utli biex jiġu evitati loops espliċiti jew dikjarazzjonijiet ta 'stennija ripetuti. L-eżempju li ġej huwa parti minn framment biex awtomat rlogin. L- exp_continue tevita li jkollok tikteb dikjarazzjoni tat-tieni tistenna (biex tfittex il-pront mill-ġdid) jekk il-rlogin iqanqal il-password.

jistenna {Password: {stty -echo send_user "password (għal $ user) fuq $ host:" expect_user -re "(. *) \ n" send_user "\ n" jibgħat "$ wait_out (1 string) \ st" stty echo exp_continue} incorrect {send_user "password invalida jew kont \ n" exit} timeout {send_user "konnessjoni ma '$ host għadeq \ n" exit} eof {send_user \ "konnessjoni ma' ospitanti falla: $ wait_out (buffer)" exit} - ri $ fil-pront)

Pereżempju, il-framment li ġej jista 'jgħin lill-utent biex jiggwida l-interazzjoni li diġà hija totalment awtomatizzata. F'dan il-każ, it-terminal jitqiegħed f'mod mhux maħdum. Jekk l-utent jippressa "+", tiżdied varjabbli. Jekk "p" tiġi ppressata, diversi prospetti jintbagħtu lill-proċess, forsi biex titħalla f'xi mod, u "i" tħalli lill-utent jinteraġixxi mal-proċess, b'mod effettiv jeqirdu l-kontroll mill-iskritt. F'kull każ, l- exp_continue jippermetti li l-kurrent jistenna li jkompli t-tqabbil tal-mudell wara li teżegwixxi l-azzjoni kurrenti.

stty raw -echo expect_after {-i $ user_spawn_id "p" {ibgħat "\ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {interazzjoni; exp_continue} "nieqaf" ħruġ}

B'mod awtomatiku, exp_continue jerġa 'jibda t-timer. L-arloġġ ma jerġax jinbeda, jekk exp_continue tissejjaħ bil-bandiera -continue_timer .

jistenna_aqter [jistenna_args]
jaħdem identiċi mal- jistenna_ qabel ħlief li jekk ix-xejriet mit-tnejn jistennew u jistennew 'il fuq jistgħu jaqblu, jintuża x-xejra tal- istennija . Ara l-kmand expect_before għal aktar informazzjoni.

jistenna_background [jistenna_args]
jieħu l-istess argumenti kif jistenna , madankollu jirritorna immedjatament. Disinji jiġu ttestjati kull meta tasal input ġdid. L- iskadenza tal- mudell u l- inadempjenza m'għandhomx sinjifikat li jistennew lura u huma mormija skartati. Inkella, il-kmand expect_background juża expect_before u jistenna_firtieri bħad jistenna ma.

Meta l-azzjonijiet expect_background qed jiġu evalwati, l-ipproċessar ta 'sfond għall-istess spawn id huwa mblukkat. L-ipproċessar tal-isfond jiġi żblukkat meta l-azzjoni titlesta. Filwaqt li l-ipproċessar tal-isfond huwa mblukkat, huwa possibbli li jsir aspett (tat-tagħrif miksub) fuq l-istess spawn id.

Mhuwiex possibbli li tesegwixxi stennija waqt li expect_background tkun żblukkata. expect_background għal spawn id partikolari titħassar billi tiddikjara expect_background ġdida bl-istess spawn id. Dikjarazzjoni ta ' expect_background bl-ebda mudell tneħħi l-id spawned mogħtija mill-abbiltà li tqabbel mudelli fl-isfond.

jistenna_ qabel [jistenna_args]
jieħu l-istess argumenti kif jistenna , madankollu jirritorna immedjatament. Il-pari ta 'azzjoni mudell mill-aktar esperjenzi reċenti' l quddiem bl-istess id spawn huma miżjuda impliċitament ma 'kwalunkwe kmand ta' stennija li ġejja. Jekk mudell jaqbel, huwa trattat daqs li kieku ġie speċifikat fil-kmand tal- istennija nnifsu, u l-korp assoċjat jiġi eżegwit fil-kuntest tal-kmand tal- istennija . Jekk mudelli miż-żewġ jistennew qabel u jistennew jistgħu jaqblu, il-mudell expected_before jintuża.

Jekk l-ebda mudell ma jkun speċifikat, l-id spawn ma tiġix ikkontrollata għal kwalunkwe xejra.

Sakemm ma jiġux imwarrba minn bandiera -i , jistenna li qabel ma l-mudelli jaqblu mal-spawn id iddefinita fiż-żmien meta l-kmand tal- istennija (qabel meta l-kmand kien imwettaq) (mhux meta d-disinn tiegħu jkun imqabbel).

Il-bandiera ta 'l- informazzjoni tikkawża li qabel ma jirritorna l-ispeċifikazzjonijiet attwali ta' liema mudelli se jaqblu. B'mod awtomatiku, hija tirrapporta dwar l-id spawn attwali. Tista 'tingħata speċifikazzjoni fakultattiva tal-spawn id għall-informazzjoni dwar dik l-id spawn. Pereżempju

jistenna_before -info -i $ proc

L-iktar speċi waħda ta 'spawn id tista' tingħata. L-indikazzjoni tal-bandiera trażżan ids diretti tal-ġwież li ġejjin biss minn speċifikazzjonijiet indiretti.

Minflok speċifikazzjoni spawn id, il-bandiera "-all" se tikkawża "-info" biex tirrapporta dwar l-ids spawn kollha.

L-output tal-bandiera ta 'l-informazzjoni tista' terġa 'tintuża bħala l-argument li tistenna qabel.

jistenna_tty [jistenna_args]
huwa simili jistenna iżda jaqra karattri minn / dev / tty (jiġifieri pressjonijiet mill-utent). B'mod awtomatiku, il-qari jsir f'modalità imsajjar. Għalhekk, il-linji għandhom jintemmu bi ritorn sabiex wieħed jistenna li jarahom. Dan jista 'jinbidel permezz ta' stabbli (ara l-kmand stty hawn taħt).

jistenna_user [jistenna_args]
huwa simili jistenna iżda jaqra karattri minn stdin (jiġifieri pressjonijiet minn utent). B'mod awtomatiku, il-qari jsir f'modalità imsajjar. Għalhekk, il-linji għandhom jintemmu bi ritorn sabiex wieħed jistenna li jarahom. Dan jista 'jinbidel permezz ta' stabbli (ara l-kmand stty hawn taħt).

furketta
toħloq proċess ġdid. Il- proċess il- ġdid huwa kopja eżatta tal- proċess Expect attwali. Dwar is-suċċess, il- furketta tirritorna 0 għall- proċess ġdid (tarbija) u tirritorna l-ID tal- proċess tal- proċess tat-tfal għall- proċess ġenitur. Fuq falliment (dejjem minħabba nuqqas ta 'riżorsi, pereżempju, tpartit l-ispazju, memorja), fork returns -1 għall- proċess ġenitur, u ma jinħoloq ebda proċess tat-tfal.

Il-proċessi furketta joħorġu mill-kmand tal- ħruġ , bħall- proċess oriġinali. Proċessi furketta huma permessi li jiktbu fil-log files. Jekk ma tiddiżattivax id-debugging jew il-qtugħ fil-biċċa l-kbira tal-proċessi, ir-riżultat jista 'jkun konfuż.

Xi implimentazzjonijiet pty jistgħu jiġu konfużi minn diversi qarrejja u kittieba, anke mumentarjament. Għalhekk, huwa sikur li jingħalaq qabel il-proċessi tal-ġenerazzjoni.

jinteraġixxu [string1 body1] ... [stringn [bodyn]]
jagħti kontroll tal- proċess kurrenti lill-utent, sabiex il-punti ewlenin jintbagħtu lill- proċess kurrenti, u l-istatus u l-istatus tal- proċess attwali jiġu rritornati.

Il-pari tal-korp ta 'sekwenza jistgħu jiġu speċifikati bħala argumenti, f'liema każ il-korp jiġi eżegwit meta tiġi mdaħħla s-sekwenza korrispondenti. (B'mod awtomatiku, is-sekwenza mhix mibgħuta fil- proċess kurrenti.) Il-kmand ta 'l- interpretu huwa assunt, jekk il-korp finali jkun nieqes.

Jekk l-argumenti għad-dikjarazzjoni kollha ta ' interazzjoni jeħtieġu aktar minn linja waħda, l-argumenti kollha jistgħu jkunu "armati" f'wieħed sabiex jevitaw li jtemmu kull linja b'lash backslash. F'dan il-każ wieħed, is-sostituzzjonijiet Tcl tas-soltu jseħħu minkejja ċ-ċingi.

Pereżempju, il-kmand li ġej jibda jinteraġixxi mal-pari ta 'kordi segwenti definiti: Meta ^ Z hija ppressata, Stenna hija sospiża. (Il-bandiera tad-dħul terġa 'ddaħħal il-modi tat-terminal.) Meta ^ A hija ppressata, l-utent jara "int ittajpja kontroll A" u l- proċess jintbagħat a ^ A. Meta $ hija ppressata, l-utent jara d-data. Meta ^ C hija ppressata, Eċċezza l- ħruġ. Jekk tiddaħħal "foo", l-utent jara "bar". Meta ~~ ikun ippressat, l-interpretu Espektri jopera interattivament.

sett CTRLZ \ 032 jinteraġixxu (-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "int ittajpjat kontroll-A \ n"; Ibgħat "\ 001"} $ {send_user "Id-data hija [format tal-arloġġ [arloġġ sekondi]]."} \ 003 ħruġ foo {send_user "bar"} ~~}

Fil-pari tal-korp ta 'sekwenza, il-kordi huma mqabbla fl-ordni li huma elenkati bħala argumenti. Strings li parzjalment jaqblu ma jintbagħtux fil- proċess kurrenti b'antiċipazzjoni tal-bqija li ġejja. Jekk il-karattri mbagħad jiddaħħlu b'tali mod li ma jkunx jista 'jkun hemm logħba, biss il-parti tas-sekwenza tintbagħat lill- proċess li ma jkunx jista' possibbilment jibda logħba oħra. Għalhekk, kordi li huma sostanzjali ta 'logħbiet parzjali jistgħu jaqblu aktar tard, jekk il-kordi oriġinali li kienu qed jippruvaw jaqblu fl-aħħar mill-aħħar jonqsu.

B'mod awtomatiku, tqabbil ta 'sekwenza huwa eżatt mingħajr karti selvaġġi . (B'kuntrast, il-kmand tal- istennija juża mudelli tal-istil tal- globu awtomatikament). Il-bandiera -ex tista 'tintuża biex tipproteġi xejriet li jistgħu jaqblu ma' bnadar ta ' interazzjoni milli jagħmlu dan. Kwalunkwe mudell li jibda b '"-" għandu jkun protett b'dan il-mod. (Il-kordi kollha li jibdew b '"-" huma riservati għal għażliet futuri.)

Il-bandiera -reġġezza s-sekwenza li għandha tiġi interpretata bħala mudell ta 'stil ta' regexp. F'dan il-każ, is-sostanzi li jaqblu huma maħżuna fil-varjabbli interact_out bl-istess mod bħall-mod kif jistenna li jaħżen il-produzzjoni tiegħu fil-varjabbli expect_out . Il-bandiera ta ' indiċijiet hija appoġġjata bl-istess mod.

Il-mudell ta 'introduzzjoni ta' azzjoni jintroduċi meta jintemm il-fajl. Disinn separat ta 'l- eof jista' jsegwi wkoll il-bandiera ta 'l- output , f'liema każ ikun imqabbel jekk tinkixef eof waqt li tkun miktuba l-output. L-azzjoni ta 'nuqqas ta' azzjoni hija "ritorn", sabiex jinteraġixxu sempliċiment jirritorna fuq kwalunkwe EOF.

L- iskadenza tal- mudell tintroduċi skadenza (f'sekondi) u azzjoni li tiġi eżegwita wara li l-ebda karattru ma jkun inqara għal żmien partikolari. Il-mudell ta ' timeout japplika għall- proċess speċifikat l-aktar riċenti. M'hemm l-ebda timeout default. Il-varjabbli speċjali "timeout" (użat mill-kmand tal- istennija ) m'għandux effett fuq dan iż-żmien ta 'skadenza.

Pereżempju, id-dikjarazzjoni li ġejja tista 'tintuża biex awtologout utenti li ma jkunux ittajpjaw xejn għal siegħa iżda li għadhom jiksbu messaġġi frekwenti tas-sistema:

interazzjoni -input $ user_spawn_id ħin ta 'skadenza 3600 ritorn-bidu \ $ spawn_id

Jekk il-mudell huwa l-keyword null , u nulls huma permessi (permezz tal-kmand remove_nulls ), il-korp korrispondenti jiġi eżegwit jekk ASCII 0 uniku jkun imqabbel. Mhux possibbli li tingħaqad 0 bytes permezz ta 'mudelli glob jew regexp.

Qabel it-tfassil ta 'mudell bl- indikazzjoni tal-bandiera tikkawża l-varjabbli interact_out (spawn_id) biex tiġi ssettjata għall-spawn_id li taqbel mad-disinn (jew eof).

Azzjonijiet bħal break u jkomplu jikkawżaw strutturi ta 'kontroll (jiġifieri, għal , proc ) li jġibu ruħhom bil-mod normali. Madanakollu, ir-ritorn jikkawża interazzjoni biex jirritorna lil min qed iċempel, filwaqt li l- interreti jikkawżaw interazzjoni biex jikkawżaw ritorn fil-persuna li qed iċempel. Per eżempju, jekk "proc foo" imsejjaħ interazzjoni li mbagħad wettqet l-azzjoni interreti , il- proċess jerġa 'lura. (Dan ifisser li jekk interazzjoni titlob interpreter b'mod interattiv it-tajping tar-ritorn iwassal biex l-interazzjoni tkompli, filwaqt li l- interreti se jikkawżaw li l-interazzjoni tirritorna lil min iċempel).

Matul l- interazzjoni , il-mod mhux maħdum jintuża sabiex il-karattri kollha jistgħu jiġu mgħoddija għall- proċess kurrenti. Jekk il- proċess attwali ma jaqbadx is-sinjali tal-kontroll tax-xogħol, dan se jwaqqaf jekk jibgħat sinjal ta 'waqfien (b'xejn ^ Z). Biex terġa 'tibda dan, ibgħat sinjal kontinwu (bħal "kill -CONT"). Jekk tassew trid tibgħat SIGSTOP għal proċess bħal dan (minn ^ Z), tikkunsidra li tniedi l-ewwel u mbagħad taħdem il-programm tiegħek. Min-naħa l-oħra, jekk trid tibgħat SIGSTOP biex tistenna hi stess, l-ewwel sejħa interpretu (forsi bl-użu ta 'karattru ta' salvataġġ), u mbagħad agħfas ^ Z.

Il-pari tal-korp ta 'sekwenza jistgħu jintużaw bħala tajpjar biex jevitaw li jkollhom jidħlu fl-interpretu u jesegwixxu kmandi b'mod interattiv. Il-mod tat-terminal ta 'qabel jintuża meta l-korp ta' par ta 'korda tal-ġisem qed jiġi eżegwit.

Għall-veloċità, l-azzjonijiet jeżegwixxu b'mod mhux ipproċessat awtomatikament. Il-bandiera ta ' riserva reset it-terminal għall-mod li kellu qabel ma ġie eżegwit interattiv (invarjabbilment, mod imsajjar). Innota li l-karattri mdaħħla meta l-modalità qed tinxtegħel jistgħu jintilfu (karatteristika sfortunata tas-sewwieq tat-terminal f'xi sistemi). L-unika raġuni għall-użu - tirrestawra jekk l-azzjoni tiegħek tiddependix fuq it-tmexxija bil-mod imsajjar.

Il-bandiera -echo tibgħat karattri li jaqblu mal-mudell li ġej lura għall- proċess li ġġenerahom kif kull persuna tinqara. Dan jista 'jkun utli meta l-utent jeħtieġ li jara rispons minn mudelli parzjalment ittajpjati.

Jekk mudell qed jiġi rifless iżda eventwalment jonqos milli jaqbel, il-karattri jintbagħtu lill- proċess imwarrab. Jekk il- proċess imwarrab imbagħad jerġa 'jseħħhom, l-utent se jara l-karattri darbtejn. -chocho probabbilment huwa xieraq biss f'sitwazzjonijiet fejn l-utent x'aktarx li ma jimlewx il -mudell. Per eżempju, is-silta li ġejja hija minn rftp, l-iskritt recursive-ftp, fejn l-utent huwa mħeġġeġ jidħol ~ g, ~ p, jew ~ l, biex jikseb, ipoġġi jew jelenka d-direttorju kurrenti b'mod rikurrenti. Dawn huma tant 'il bogħod mill-kmand normali tal-ftp, li l-utent x'aktarx ma jagħtix it-tip ~ segwit b'kull ħaġa oħra, ħlief bi żball, f'liema każ, probabbilment se jinjoraw ir-riżultat xorta waħda.

jinteraġixxu (-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}

Il-bandiera tan- noti tibgħat karattri li jaqblu mal-mudell li ġej fuq il- proċess tal-ħruġ hekk kif jinqraw il-karattri.

Dan huwa utli meta tixtieq tħalli l-programm jerġa 'lura l-mudell. Pereżempju, dan li ġej jista 'jintuża biex jimmonitorja fejn qiegħda tissejjaħ persuna (mod ta' stil Hayes). Kull darba li "atd" jidher l-iskripts jiffurmaw il-bqija tal-linja.

L-isem ta 'l-operatur {} {interact -nobuffer -re "(. *)" jirrendi tpoġġi $ log "[format tal-arloġġ [arloġġ sekondi]]: ikkalibbrata $ interact_out (1, string)"} jinteraġixxu -nobuffer "atd"

Matul l- interazzjoni , l-użu preċedenti ta ' log_user huwa injorat. B'mod partikolari, jinteraġixxu se jġiegħel il-produzzjoni tiegħu tkun illoggjata (mibgħuta lill-output standard) billi huwa preżunt li l-utent ma jixtieqx jinteraġixxi bl-addoċċ.

Il-bandiera -o tikkawża li jiġu applikati l-pari li ġejjin tal-kavitajiet għall-output tal- proċess kurrenti. Dan jista 'jkun utli, per eżempju, meta jittratta ma' ospiti li jibagħtu karattri mhux mixtieqa matul sessjoni telnet.

B'kontumaċja, l- interazzjoni tistenna li l-utent ikun bil-miktub stdin u qari stdout tal- proċess Expect innifsu. Il-bandiera -u (għal "utent") tagħmel interazzjoni tħares għall-utent bħala l- proċess imsemmi bl-argument tiegħu (li għandu jkun id spawned).

Dan jippermetti li żewġ proċessi mhux relatati jingħaqdu flimkien mingħajr ma jużaw linja espliċita. Biex tgħin fid-debugging, Id-dijanjostiċi li jistennew dejjem imorru għal stderr (jew stdout għal ċerta informazzjoni ta 'qtugħ u debugging). Għall-istess raġuni, il-kmand ta 'l- interpreti jinqara b'mod interattiv minn stdin.

Pereżempju, il-framment li ġej joħloq proċess ta ' login. Imbagħad tiddikjara lill-utent (mhux murija), u finalment jgħaqqad iż-żewġ flimkien. Naturalment, kwalunkwe proċess jista 'jiġi sostitwit għal login. Qoxra, per eżempju, tippermetti lill-utent biex jaħdem mingħajr ma jforni kont u password.

spawn login iffissar login $ spawn_id spawn tip modem # dial lura lill-utent # jgħaqqdu l-utent biex jidħol login interact -u $ login

Biex tibgħat il-produzzjoni għal proċessi multipli, elenka kull tikketta tad-disinn ippreferita minn bandiera ta ' ħruġ . Id-dħul għal grupp ta 'ids tal-ġwież tal-produzzjoni jista' jiġi ddeterminat permezz ta 'lista tal-id spawn prefaced minn bandiera ta' dħul. (It-tnejn- input u -output jistgħu jieħdu listi fl-istess forma bħall-bandiera -i fil-kmand tal- istennija , ħlief li xi_spawn_id ma jkollux sinifikat f'interazzjoni ). Dawn il-bnadar u kordi (jew mudelli) li ġejjin japplikaw għal dan id-dħul sa ieħor - jidher il-bandiera input. Jekk ma tidher l-ebda input , -output jimplika "-input $ user_spawn_id -output". (Bl-istess mod, b'disinji li ma jkollhomx id-dħul). Jekk jiġi speċifikat input wieħed, huwa jħassar $ user_spawn_id. Jekk tiddaħħal it-tieni input , din tissupera $ spawn_id. Jistgħu jiġu speċifikati bnadar ta ' input addizzjonali.

Iż-żewġ proċessi ta 'input impliċiti huma inadegwati biex ikollhom ir-riżultati tagħhom speċifikati bħala $ spawn_id u $ user_spawn_id (b'lura). Jekk il-bandiera ta 'dħul tidher mingħajr bandiera ta' ħruġ , karattri minn dak il- proċess jintremew.

Il-bandiera -i tintroduċi sostitut għall-spawn_id kurrenti meta ma jintużawx bnadar oħra ta ' input jew output . Il-bandiera -i timplika bandiera -o.

Huwa possibbli li jinbidlu l-proċessi li qed jinġabru magħhom billi jintużaw ids indiretti tal-ġenerazzjoni. (IDs indiretti tal-ġwież huma deskritti fit-taqsima dwar il-kmand tal-istennija.) Ids indiretti tal-spawn jistgħu jiġu speċifikati biċ-ċifri -i, -u, -input, -output.

interpretu [args]
jikkawża li l-utent jiġi mġiegħel b'mod interattiv għall-Kmandi Expect u Tcl. Ir-riżultat ta 'kull kmand huwa stampat.

Azzjonijiet bħal break u jkomplu jikkawżaw strutturi ta 'kontroll (jiġifieri, għal , proc ) li jġibu ruħhom bil-mod normali. Madanakollu r-ritorn iġiegħel lill-interpretu jirritorna lil dak li qed iċempel, filwaqt li l- interreti jikkawżaw interpreti li jikkawża ritorn fis-sejjieħ tiegħu. Pereżempju, jekk "proc foo" imsejjaħ interpretu li mbagħad wettaq l-azzjoni fost ir-ritorn , il- proċess jerġa 'lura. Kwalunkwe kmand ieħor jikkawża interpreti biex ikompli jħeġġeġ għal kmandi ġodda.

B'mod awtomatiku, il-pront fih żewġ interi. L-ewwel numru sħiħ jiddeskrivi l-fond tal-munzell ta 'evalwazzjoni (jiġifieri, kemm-il darba ġie msejjaħ Tcl_Eval). It-tieni numru sħiħ huwa l-identifikatur tal-istorja Tcl. Il-pront jista 'jiġi stabbilit billi tiddefinixxi proċedura msejħa "prompt1" li l-valur tar-ritorn tagħha jsir il-pront. Jekk dikjarazzjoni għandha kwotazzjonijiet miftuħa, parens, ċineg jew parentesi, pront sekondarju (awtomatikament "+>") jinħareġ fuq linja ġdida. Il-pront sekondarju jista 'jiġi stabbilit billi tiddefinixxi proċedura msejħa "prompt2".

Matul l- interpretu , jintuża l-mod imsajjar, anke jekk il-persuna li qed tagħmel is-sejħa tagħha kienet qed tuża mod mhux ipproċessat.

Jekk stdin jingħalaq, l- interpretu għandu jirritorna sakemm ma tintużax il - marka tal- bandiera, f'liema każ jiġi invokat l-argument sussegwenti.

log_file [args] [[-a] file]
Jekk jiġi pprovdut isem tal-fajl, log_file se jirreġistra traskrizzjoni tas-sessjoni (li tibda f'dak il-punt) fil-fajl. log_file se jwaqqaf ir-reġistrazzjoni jekk ma jingħata l-ebda argument. Kwalunkwe fajl tar-reġistru preċedenti huwa magħluq.

Minflok isem tal-fajl, identifikatur tal-fajl Tcl jista 'jiġi pprovdut billi tuża l- bnadar ta' l - apertura jew ta 'l- ilqugħ . Dan huwa simili għall-kmand tal- spawn . (Ara spawn għal aktar tagħrif.)

Il-bandiera- a tħeġġeġ il- produzzjoni li għandha tiġi rreġistrata li ġiet imrażżna mill-kmand log_user .

B'mod awtomatiku, il-kmand log_file jehmeż ma 'fajls qodma minflok ma jaqta' minnhom, għall-konvenjenza li jkun jista 'jdur u f'diversi darbiet f'sessjoni waħda. Biex taqta 'fajls, uża l-bandiera -noappend .

Il-marka ta 'l-informazzjoni tikkawża log_file biex tirritorna deskrizzjoni ta' l-argumenti l-aktar reċenti mhux ta 'l-informazzjoni mogħtija.

log_user -info | 0 | 1
B'mod default, id-djalogu tibgħat / tistenna tkun illoggjat għal stdout (u logfile jekk miftuħa). Il-qtugħ għal stdout huwa diżattivat mill-kmand "log_user 0" u mdaħħla mill-ġdid permezz ta '"log_user 1". L-illoggjar fil-logfile ma jinbidilx.

Il-bandiera ta 'l-informazzjoni tikkawża log_user li jirritorna deskrizzjoni ta' l-argumenti l-aktar reċenti li ma ġewx mogħtija.

match_max [-d] [-i spawn_id] [id-daqs]
jiddefinixxi d-daqs tal-buffer (f'bytes) użat internament minn jistenna . Bl-ebda argument ta ' daqs , id-daqs attwali jintradd lura.

Bil-bandiera- d , id-daqs awtomatiku huwa stabbilit. (L-inadempjenza inizjali hija 2000.) Bil-bandiera -i , id-daqs huwa stabbilit għall-id spawn iddeterminata, inkella huwa stabbilit għall- proċess kurrenti.

overlay [- # spawn_id] [- # spawn_id] [...] programm [args]
twettaq " args tal- programm " minflok il-programm Expect attwali, li jintemm. Argument ta 'hyphen vojt jsaħħaħ il-linja tal-kmand bħallikieku kien qoxra tal-login. Il-spawn_ids kollha huma magħluqa ħlief għal dawk imsemmija bħala argumenti. Dawn huma mniżżla fuq l-identifikaturi tal-fajl bl-isem.

Il-spawn_ids huma mmirati għall-identifikaturi tal-fajl għall-programm il-ġdid li jirtu. Pereżempju, il-linja li ġejja tmexxi ċess u tippermetti li tkun ikkontrollata mill- proċess kurrenti - jiġifieri, kaptan taċ-ċess.

overlay -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id taċ-ċess

Dan huwa aktar effiċjenti minn "interact -u", madankollu, jissagrifika l-abbiltà li tagħmel interazzjoni programmata peress li l- proċess Expect m'għadux aktar fil-kontroll.

Innota li l-ebda terminal ta 'kontroll m'hu pprovdut. Għalhekk, jekk taqleb jew terġa 'timla l-input standard, programmi li jagħmlu kontroll tax-xogħol (qxur, login, eċċ) ma jaħdmux kif suppost.

parità [-d] [-i spawn_id] [valur]
jiddefinixxi jekk il-parity għandux jinżamm jew jitneħħa mill-produzzjoni ta 'proċessi ta' produzzjoni. Jekk il- valur huwa żero, il-parità hija mqaxxra, inkella ma tkunx imqaxxra. Bl-ebda argument ta ' valur , il-valur kurrenti huwa rritornat.

Bil-bandiera -D , il-valur tal-parità default huwa stabbilit. (L-inadempjenza inizjali hija 1, jiġifieri, il-parità mhix imqaxxra.) Bil-bandiera -i , il-valur tal-parità huwa stabbilit għall-id spawned imsemmija, inkella huwa stabbilit għall- proċess kurrenti.

remove_nulls [-d] [-i spawn_id] [valur]
jiddefinixxi jekk nulls jinżammux jew jitneħħew mill-produzzjoni ta 'proċessi mġedda qabel tqabbil tal-mudell jew ħażna fil-fattur varjabbli expect_out jew interact_out . Jekk il- valur huwa 1, in-nullijiet jitneħħew. Jekk il- valur huwa 0, nulls mhumiex imneħħija. Bl-ebda argument ta ' valur , il-valur kurrenti huwa rritornat.

Bil-bandiera -d , il-valur awtomatiku huwa stabbilit. (L-inadempjenza inizjali hija 1, jiğifieri n-nullijiet huma mnehhija.) Bil-bandiera -i , il-valur huwa stabbilit ghall-id spawned imsemmi, inkella huwa stabbilit ghall- proćess kurrenti.

Ineħħu n-nullijiet jew le, Jistennew jirreġistraw bytes nulli fir-reġistru u l-istatus.

Ibgħat [-flags] string
Ibgħat il- korda għall- proċess kurrenti. Pereżempju, il-kmand

Ibgħat "hello world \ r"

jibgħat il-karattri, helloworld għall- proċess kurrenti. (Tcl jinkludi kmand ta ' printf- like (imsejjaħ format ) li jista' jibni kordi arbitrarjament kumplessi.)

Il-karattri jintbagħtu immedjatament għalkemm il-programmi b'input buffered b'linja ma jaqrawx il-karattri sakemm jintbagħat karattru ta 'ritorn. Karattru ta 'ritorn huwa denotat "\ r".

Il- " bandiera" iġġiegħel l-argument li jmiss biex jiġi interpretat bħala sekwenza minflok bandiera. Kwalunkwe sekwenza tista 'tiġi preċeduta minn "-" kemm jekk attwalment tidher qiesha bħala bandiera jew le. Dan jipprovdi mekkaniżmu affidabbli biex jiġu speċifikati kordi varjabbli mingħajr ma jiġu sfruttati minn dawk li b'mod inċidentali jidhru bnadar. (Il-kordi kollha li jibdew b '"-" huma riservati għal għażliet futuri.)

Il-bandiera -i tiddikjara li s-sekwenza tintbagħat lill-spawn_id imsemmija. Jekk il-spawn_id huwa user_spawn_id , u t-terminal huwa fil-mod mhux maħdum, linji ġodda fis-sekwenza huma tradotti għal sekwenzi ta 'ritorn-newline sabiex jidhru daqs li kieku t-terminal kien fil-mod imsajjar. Il-bandiera li tiddiżattiva din it-traduzzjoni.

Il-bandiera kollha tibgħat karattri nulli (0 bytes). B'kontumaċja, tintbagħat null. In-numru sħiħ jista 'jsegwi -null biex jindika kemm nulli li trid tibgħat.

Il-bandiera tar- rimja tiġġenera kundizzjoni ta 'qsim. Dan jagħmel sens biss jekk l-id spawning tirreferi għal strument tty miftuħ permezz ta '"spawn-open". Jekk bdejt proċess bħal ponta, għandek tuża l-konvenzjoni tat-tip biex tiġġenera waqfa.

Il-bandiera ta 'l-isforz iwassal biex tintbagħat "bil-mod", biex b'hekk tiġi evitata s-sitwazzjoni komuni fejn kompjuter ma jaqbiżx il-livell ta' buffer tal-input li kien iddisinjat għal bniedem li qatt ma kien jaqbeż l-istess buffer . Dan l-output huwa kkontrollat ​​mill-valur tal-varjabbli "send_slow" li jieħu lista ta 'żewġ elementi. L-ewwel element huwa numru sħiħ li jiddeskrivi n-numru ta 'bytes li jibgħat atomikament. It-tieni element huwa numru reali li jiddeskrivi n-numru ta 'sekondi li bihom l-ittri atomiċi għandhom ikunu separati. Pereżempju, "sett send_slow {10.00001}" jġiegħel "tibgħat -s" biex tibgħat kordi b'millisekonda 1 bejn kull 10 karattri mibgħuta.

Il-bandiera ta 'l-indirizzi tal-forzi tintbagħat (kemmxejn) bħal bniedem fil-fatt ittajpjar. Dewmien simili għall-bniedem jidher bejn il-karattri. (L-algoritmu huwa bbażat fuq distribuzzjoni ta 'Weibull, b'modifiki adattati għal din l-applikazzjoni partikolari.) Dan l-output huwa kkontrollat ​​bil-valur tal-varjabbli "send_man" li jieħu lista ta' ħames elementi. L-ewwel żewġ elementi huma l-ħin medju interarrivali tal-karattri f'sekondi. L-ewwel tintuża awtomatikament. It-tieni tintuża fit-truf tal-kliem, biex tissimula l-pawżi sottili li kultant iseħħu f'tali tranżizzjonijiet. It-tielet parametru huwa kejl ta 'varjabilità fejn .1 huwa pjuttost varjabbli, 1 huwa raġonevolment varjabbli, u 10 huwa pjuttost invarjabbli. L-estremi huma 0 sa infinita. L-aħħar żewġ parametri huma, rispettivament, ħin interarrivali minimu u massimu. Il-minimu u massimu jintużaw l-aħħar u "clip" il-ħin finali. Il-medja aħħarija tista 'tkun pjuttost differenti mill-medja mogħtija jekk il-valuri minimi u massimi ta' kliewi biżżejjed.

Bħala eżempju, il-kmand li ġej jimita 'tajper mgħaġġel u konsistenti:

sett send_human {.1 .3 1 .05 2} ibgħat -h "Jiena bil-ġuħ. Ejja nagħmlu l-ikla."

filwaqt li dawn li ġejjin jistgħu jkunu aktar adattati wara l-hargue:

sett send_human {.4 .4 .2 .5 100} ibgħat -h "Goodd party lash night!"

Innota li l-iżbalji mhumiex simulati, għalkemm tista 'twaqqaf sitwazzjonijiet ta' korrezzjoni ta 'żbalji billi żżid l-iżbalji u l-korrezzjonijiet f' argument li tibgħat.

Il-bnadar biex jintbagħtu karattri nulli, biex jintbagħtu pawżi, biex jġiegħlu produzzjoni bil-mod u għal produzzjoni ta 'stil uman huma esklussivament reċiproku. Jintuża biss dak speċifikat l-aħħar. Barra minn hekk, l-ebda argument ta ' sekwenza ma jista' jiġi speċifikat mal-bnadar biex jintbagħtu karattri nulli jew pawżi.

Hija idea tajba li tippreċedi l-ewwel tibgħat għal proċess billi tistenna . jistennew jistennew li l- proċess jibda, waqt li jibgħat ma jistax. B'mod partikolari, jekk l-ewwel tibgħat timla qabel il- proċess jibda jaħdem, għandek ir-riskju li d-data tiegħek tiġi injorata. F'sitwazzjonijiet fejn il-programmi interattivi ma joffru l-ebda bidu fil-pront, tista 'tippreċedi tibgħat b'dewmien bħal:

# Biex tevita li tagħti hackers ħjiel dwar kif tinqasam, # din is-sistema ma tħeġġiġx għal password esterna. # Stenna għal 5 sekondi għall-eżekut biex tlesti telnet spawn ħafna.secure.gov torqod 5 tibgħat il-password

exp_send huwa alias biex jintbagħat. Jekk qed tuża Expectk jew xi varjant ieħor ta 'Jistennew fl-ambjent Tk, jibgħat huwa definit minn Tk għal skop kompletament differenti. exp_send hija pprovduta għall-kompatibilità bejn l-ambjenti. Psewdonimi simili huma pprovduti għall-kmandi l-oħra ta 'l-ispedizzjoni ta' l-Expect.

send_error [-flags] string
Huwa simili li jibgħat , ħlief li l-output jintbagħat lil stderr minflok il- proċess kurrenti.

send_log [-] string
huwa simili li tibgħat , ħlief li s-sekwenza tintbagħat biss lill-fajl log (ara log_file .) L-argumenti huma injorati jekk l-ebda log file ma jkun miftuħ.

send_tty [-flags] string
Huwa simili li jibgħat , ħlief li l-output jintbagħat lil / dev / tty aktar milli l- proċess kurrenti.

send_user [-flags] string
huwa simili li jibgħat , ħlief li l-output jintbagħat lil stdout minflok il- proċess kurrenti.

sleep seconds
jikkawża li l-iskrittura jorqod għal numru ta 'sekondi. It-tieni jistgħu jkunu numru deċimali. Interruzzjonijiet (u avvenimenti Tk jekk qed tuża Expectk) huma pproċessati waqt li tistenna l-irqad.

il-programm spawn [args] [args]
toħloq proċess ġdid li għaddej " args tal- programm ". L-istdin, l-istdout u l-stderr tagħhom huma konnessi ma 'Stenna, sabiex ikunu jistgħu jinqraw u jinkitbu b'komandazzjonijiet oħra ta' l- Ett . Il-konnessjoni tinqasam mill- qrib jew jekk il- proċess innifsu jagħlaq xi wieħed mill-identifikaturi tal-fajl.

Meta jinbeda proċess mill- spawn , il-varjabbli spawn_id huwa ssettjat għal deskrittur li jirreferi għal dak il- proċess . Il- proċess deskritt minn spawn_id huwa kkunsidrat bħala l- " proċess kurrenti ". spawn_id jista 'jinqara jew jinkiteb, li effettivament jipprovdi kontroll tax-xogħol.

user_spawn_id huwa varjabbli globali li fih deskrittur li jirreferi għall-utent. Per eżempju, meta spawn_id huwa ssettjat għal dan il-valur, jistenna li jġib ruħu bħal jistenna_user .

.I error_spawn_id huwa varjabbli globali li fih deskrittur li jirreferi għall-iżball standard. Per eżempju, meta spawn_id huwa ssettjat għal dan il-valur, ibgħat iġib ruħu bħal send_error .

tty_spawn_id huwa varjabbli globali li fih deskrittur li jirreferi għal / dev / tty. Jekk / dev / tty ma teżistix (bħal f'cron, fi, jew kitba tal-lott), allura tty_spawn_id mhux definit. Dan jista 'jiġi ttestjat bħala:

jekk {[info vars tty_spawn_id]} {# / dev / tty teżisti} inkella (# / dev / tty ma teżistix # probabbilment f'cron, lott, jew b'kitba}

spawn jirritorna l-ID tal- proċess UNIX. Jekk l-ebda proċess ma jkun imwassal, 0 jiġi rritornat. Il-varjabbli spawn_out (slave, name) hija ssettjata fl-isem tat-tagħmir tal-iskjavi pty.

B'kontumaċja, tbid tispjega l-isem u l-argumenti tal-kmand. Il-bandiera -noecho tieqaf tbid milli tagħmel dan.

Il-bandiera tal- konsulenti tikkawża li l-produzzjoni tal-console tiġi diretta mill-ġdid lejn il- proċess imwessa '. Dan mhux appoġġjat fis-sistemi kollha.

Internament, spawn juża pty, inizjalizzat bl-istess mod bħat-tty ta 'l-utent. Dan huwa inizjalizzat aktar sabiex is-settings kollha huma "sane" (skond stty (1)). Jekk il-varjabbli stty_init hija definita, hija interpretata fl-istil ta 'argumenti stty bħala konfigurazzjoni oħra. Pereżempju, "sett sty_init raw" jikkawża terminali tal-proċessi mġedda aktar biex jibdew fil-mod mhux maħdum. -nottycopy skips l-inizjalizzazzjoni bbażata fuq it-tty tal-utent. -Nottyinit skips l-inizjalizzazzjoni "sana".

Normalment, spawn jieħu ftit ħin biex tesegwixxi. Jekk tinnota li tredda 'tieħu ammont sinifikanti ta' ħin, huwa probabbilment li jiltaqgħu ma 'ptys li huma marbuta. Għadd ta 'testijiet jitmexxew fuq ptys biex jiġi evitat taħbil mal-proċessi errant. (Dawn jieħdu 10 sekondi għal kull pty tas-swaba). Running Waqt li tistenna bl-għażla -d se turi jekk Hux qed tiltaqa 'ma' ħafna ptys fi stati fard. Jekk ma tistax toqtol il-proċessi li magħhom huma mehmuża dawn il-ptys, l-uniku rikors tiegħek jista 'jkun li terġa' tibda.

Jekk il- programm ma jistax jiġi bbilanċjat b'suċċess minħabba li l-exec (2) ma jirnexxix (eż. Meta l- programm ma jeżistix), messaġġ ta 'żball jiġi rritornat mill- interattiv li jmiss jew jistenna kmand bħallikieku l- programm kien għadda u pproduċa l-messaġġ ta' żball bħala output. Din l-imġieba hija konsegwenza naturali tal-implimentazzjoni tal- spawn . Internament, il-friekiet tal-ġwież, li warajh il-proċess imġarrab m'għandu l-ebda mod kif jikkomunika mal- proċess oriġinali Expect minbarra permezz ta 'komunikazzjoni permezz ta' spawn_id.

Il-bandiera l- ġdida twassal biex l-argument li jmiss jiġi interpretat bħala identifikatur tal-fajl Tcl (jiġifieri, ritornat minn miftuħ ). L-id spawned jista 'mbagħad jintuża daqs li kieku kien proċess imwessa'. (L-identifikatur tal-fajl m'għandux jibqa 'jintuża.) Dan jippermettilek tittratta apparati mhux ipproċessati, fajls u pajpijiet bħala proċessi mġedda mingħajr ma tuża pty. 0 jintbagħat lura biex jindika li m'hemm l-ebda proċess assoċjat. Meta l-konnessjoni mal- proċess ġenerat hija magħluqa, dan huwa l-identifikatur tal-fajl Tcl. Il-bandiera ta ' -leaveopen hija simili għal -open ħlief li -leaveopen tikkawża li l-identifikatur tal-fajl jitħalla miftuħ anki wara li l-id spawn hija magħluqa.

Il-bandiera vojta tikkawża pty biex tinfetaħ iżda ma ġara l- ebda proċess . 0 jintbagħat lura biex jindika li m'hemm l-ebda proċess assoċjat. Spawn_id huwa stabbilit bħas-soltu.

Il-varjabbli spawn_out (slave, fd) hija ffissata għal identifikatur tal-fajl li jikkorrispondi għall-iskjav tal-pty. Jista 'jingħalaq bl-użu ta' "silenzju mill-qrib".

Il-bandiera tal-bandiera turi sinjal li għandu jiġi injorat fil- proċess imwessa '. Inkella, is-sinjali jiksbu l-imġieba default. Is-sinjali huma msemmija bħala fil-kmand tan - nassa , ħlief li kull sinjal jeħtieġ bandiera separata.

livell ta 'strace
jikkawża li d-dikjarazzjonijiet li ġejjin jiġu stampati qabel ma jiġu eżegwiti. (It-traċċi tal-kmand tal-intraċċar ta 'Tcl varjabbli.) Il- livell jindika kemm' l isfel fis-sejħa ta 'munzell biex jintraċċa. Per eżempju, il-kmand li ġej jibda Jistenna waqt li ssegwi l-ewwel 4 livelli ta 'sejħiet, iżda xejn taħt dak.

jistenna -c "strace 4" script.exp

Il-bandiera ta 'l-informazzjoni tikkawża li tirritorna deskrizzjoni ta' l-aktar argumenti reċenti mhux ta 'l-informazzjoni mogħtija.

stty args
jibdel modi terminali bl-istess mod bħall-kmand stabbli estern.

B'kontumaċja, it-terminal tal-kontroll huwa aċċessat. Jistgħu jiġu aċċessati terminals oħra billi jitwaħħal "Talbiet għal status jirritornaha bħala riżultat tal-kmand. Jekk ma jintalab l-ebda status u t-terminal ta 'kontroll huwa aċċessat, l-istatus preċedenti tal-attributi nej u l-echo jiġu rritornati f'forma li tista' tiġi aktar tard użat mill-kmand.

Per eżempju, l-argumenti prima jew -cooked iqiegħdu t-terminal f'mod mhux maħdum. L-argumenti -raw jew imsajjar poġġew it-terminal f'modalità imsajjar. L-argumenti echo u -echo poġġew it-terminal f'modalità echo u noecho rispettivament.

L-eżempju li ġej juri kif tista 'tiġi diżattivata temporanjament l-echoing. Dan jista 'jintuża fi skripts awtomatikament awtomatiċi biex jiġi evitat li jiġu inkorporati l-passwords fihom. (Ara aktar diskussjoni dwar dan taħt EXPECT HINTS hawn taħt).

stty -echo send_user "Password:" expect_user -re "(. *) \ n" sett password $ expect_out (1, sekwenza) stty echo

args tas-sistema
jagħti args li sh (1) bħala input, daqslikieku kien ittajpjat bħala kmand minn terminal. Ejja nistenna sakemm tispiċċa l-qoxra. L-istatus tar-ritorn minn sh jiġi ttrattat bl-istess mod li l-amministratur jimmaniġġja l-istatus tar-ritorn tiegħu.

B'kuntrast ma ' exec li rediretti stdin u stdout għall-iskritt, is-sistema ma twettaq ebda direzzjoni mill-ġdid (għajr dik indikata mill-istrixxa nnifisha). Għalhekk, huwa possibbli li jintużaw programmi li għandhom jitkellmu direttament ma '/ dev / tty. Għall-istess raġuni, ir-riżultati tas- sistema mhumiex irreġistrati fir-reġistru.

timestamp [args]
jirritorna timestamp. Bl-ebda argument, in-numru ta 'sekondi mill-epoch jiġi rritornat.

Il-bandiera tal- format tintroduċi sensiela li tiġi rritornata iżda b'sostituzzjonijiet magħmula skont ir-regoli POSIX għal strftime. Pereżempju% a huwa sostitwit b'indirizz tal-ġimgħa tal-ġimgħa (jiġifieri, Sat). Oħrajn huma:

% isem tal-ġimgħa tal-ġimgħa skedat% Isem tal-ġimgħa tal-ġimgħa sħiħ% b isem xahar imqassar% B isem sħiħ tax-xahar% ċ data-ħin bħal: Wed Ottubru 6 11:45:56 1993% d jum tax-xahar (01-31% H siegħa (00-23)% I siegħa (01-12)% j jum (001-366)% m xahar (01-12)% M minuta (00-59)% p am jew pm% S it-tieni (00-61) (1 sa 7, it-Tnejn huwa l-ewwel jum tal-ġimgħa)% U ġimgħa (00-53, l-ewwel Ħadd ikun l-ewwel jum tal-ġimgħa waħda)% V ġimgħa (01-53, stil ISO 8601) 6)% W ġimgħa (00-53, l-ewwel Tnejn huwa l-ewwel jum tal-ġimgħa waħda)% x data-ħin bħal: Wed Ottubru 6 1993% X ħin bħal: 23:59:59% sena y (00-99) % Y sena bħal fil: 1993% Z timezone (jew xejn jekk mhux determinabbli) %% sinjal fil-mija vojt

Speċifikazzjonijiet oħra ta '% huma indefiniti. Karattri oħra jiġu mgħoddija mhux mittiefsa. Jiġi appoġġat biss il-lokal Ċ.

Il-bandiera ta 'sekondi tintroduċi għadd ta' sekondi mill-epoch li għandu jintuża bħala sors li minnu sa l-format. Inkella, tintuża l-ħin attwali.

Il-bandiera- gmt timponi l -ħruġ ta 'timestamp biex tuża l-ħin tal- linja tal- GMT . Bl-ebda bandiera, it-timonera lokali tintuża.

sinjali tan-nassa [[kmand]]
jikkawża li l- kmand mogħti jiġi eżegwit mal-wasla futura ta 'xi sinjali mogħtija. Il-kmand jiġi eżegwit fl-ambitu globali. Jekk il- kmand ikun nieqes, l-azzjoni tas-sinjal tintbagħat lura. Jekk il- kmand huwa s-sinjal SIG_IGN, is-sinjali huma injorati. Jekk il- kmand huwa s-sekwenza SIG_DFL, is-sinjali huma riżultat tal-inadempjenza tas-sistema. Is-sinjali huma jew sinjal wieħed jew lista ta 'sinjali. Is-sinjali jistgħu jiġu speċifikati numerikament jew simbolikament skond is-sinjal (3). Il-prefiss "SIG" jista 'jitħalla barra.

Bl-ebda argument (jew l-argument -numru), in-nassa jirritorna n -numru tas-sinjal tal-kmand tan-nassa li qed jiġi eżegwit bħalissa.

Il- kodiċi- bandiera juża l-kodiċi tar-ritorn tal-kmand minflok x'ikun il-kodiċi Tcl wasal biex jirritorna meta l-kmand oriġinarjament beda jopera.

Il-bandiera -interp twassal biex il-kmand jiġi evalwat bl-użu tal-interpretu attiv fiż-żmien meta l-kmand beda jaħdem iktar milli meta n-nassa kienet iddikjarata.

Il-bandiera ta 'l- isem toħloq il-kmand tan - nassa biex tirritorna l-isem tas-sinjal tal-kmand tan-nassa li qed jiġi eżegwit bħalissa.

Il-bandiera -max tikkawża l-kmand tan - nassa biex tirritorna l-akbar numru tas-sinjal li jista 'jiġi stabbilit.

Per eżempju, il-kmand "nassa {send_user" Ouch! "} SIGINT" se tipprintja "Ouch!" Kull darba li l-utent jippressa ^ C.

B'mod default, SIGINT (li ġeneralment tista 'tiġi ġġenerata billi tagħfas ^ C) u SIGTERM joħolqu Espera li toħroġ. Dan huwa dovut għan-nassa li ġejja, maħluqa awtomatikament meta tistenna li tibda.

Ħruġ tan-nassa {SIGINT SIGTERM}

Jekk tuża l-bandiera -D biex tibda d-debugger, SIGINT jiġi definit mill-ġdid biex tibda d-debuttur interattiv. Dan huwa minħabba n-nassa li ġejja:

nassa {exp_debug 1} SIGINT

In-nassa tad-debugger tista 'tinbidel billi tistabbilixxi l-varjabbli ta' l-ambjent EXPECT_DEBUG_INIT għal kmand ta 'nassa ġdida.

Tista ', ovvjament, issolvi dawn iż-żewġ sempliċement billi żżid il-kmand tan-nassa għall-kitba tiegħek. B'mod partikolari, jekk ikollok "ħarġa ta 'ħarba SIGINT" tiegħek stess, dan se jissepara n-nassa tad-debugger. Dan huwa utli jekk inti tixtieq li tipprevjeni lill-utenti milli jaslu għand id-debugger.

Jekk trid tiddefinixxi nassa tiegħek fuq SIGINT iżda xorta nassa għan-debugger meta tkun qed taħdem, uża:

jekk {! [exp_debug]} {trap mystuff SIGINT}

Alternattivament, tista 'tiċċaqlaq lejn id-depuġġant billi tuża xi sinjal ieħor.

nassa ma tħallikx tidderieġi l-azzjoni għas-SIGALRM peress li din tintuża internament biex tistenna . Il-kmand ta 'skonnettjar jiffissaw SIGALRM lil SIG_IGN (jinjora). Tista 'ttenni dan sakemm tiddiżattivaha waqt kmandi sussegwenti ta' tbid.

Ara s-sinjal (3) għal aktar tagħrif.

stenna [args]
dewmien sakemm jintemm proċess imġedded (jew il- proċess attwali jekk jingħad xejn) itemm.

stenna normalment tirritorna lista ta 'erba' numri interi. L-ewwel numru sħiħ huwa l-pid tal- proċess li kien stenniet. It-tieni numru sħiħ huwa l-id spawn korrispondenti. It-tielet numru sħiħ huwa -1 jekk ikun seħħ żball tas-sistema operattiva, jew inkella inkella. Jekk it-tielet numru sħiħ kien 0, ir-raba 'numru sħiħ huwa l-istatus irritornat mill- proċess imwessa'. Jekk it-tielet numru sħiħ kien -1, ir-raba 'numru sħiħ huwa l-valur ta' errno stabbilit mis-sistema operattiva. L-iżball varjabbli globali Kodiċi huwa wkoll stabbilit.

Elementi addizzjonali jistgħu jidhru fl-aħħar tal-valur tar-ritorn mill- istennija . Il-ħames element fakultattiv jidentifika klassi ta 'informazzjoni. Bħalissa, l-uniku valur possibbli għal dan l-element huwa MFITTXIJA f'liema każ iż-żewġ valuri li jmiss huma l-isem tas-sinjal C-stil u deskrizzjoni qasira ta 'test.

Il-bandiera -i tiddikjara l- proċess li tistenna li tikkorrispondi mal-spawn_id imsemmija (MHUX ID tal- proċess ). Ġewwa l-handler SIGCHLD, huwa possibbli li wieħed jistenna għal kwalunkwe proċess imwarrab billi juża id-spawn id -1.

Il-bandiera nowait tikkawża l-istennija li terġa 'lura immedjatament bl-indikazzjoni ta' stennija ta 'suċċess. Meta l- proċess joħroġ (iktar tard), dan awtomatikament jisparixxi mingħajr il-ħtieġa ta 'stennija espliċita.

Il-kmand tal-istenna jista 'jintuża wkoll stenna għal proċess imsejjaħ bl-użu tal-argumenti "-i -1". B'differenza mill-użu tiegħu bi proċessi ta 'ġenerazzjoni, dan il-kmand jista' jiġi eżegwit fi kwalunkwe ħin. Ma hemm l-ebda kontroll fuq liema proċess jinħasad. Madankollu, il-valur tar-ritorn jista 'jiġi kkontrollat ​​għall-id tal- proċess .

BIBLJOTEKI

Nistennew awtomatikament taf dwar żewġ libreriji integrati għal skripts ta 'Espera. Dawn huma ddefiniti mill-direttorji msemmija fil-varjabbli exp_library u exp_exec_library. It-tnejn huma maħsuba biex jinkludu fajls ta 'utilità li jistgħu jintużaw minn skripts oħra.

exp_library fiha fajls indipendenti mill-arkitettura. exp_exec_library fih fajls li jiddependu mill-arkitettura. Skont is-sistema tiegħek, iż-żewġ direttorji jistgħu jkunu totalment vojta. L-eżistenza tal-fajl $ exp_exec_library / cat-buffers tiddeskrivi jekk il-buffers tiegħek bin / qattus awtomatikament.

PRETTY-PRINTING

Definizzjoni vgrind hija disponibbli għal skripts ta 'l-istampar ta' l-istampar. Jekk wieħed jassumi li d-definizzjoni ta 'vgrind fornuta bid-distribuzzjoni ta' Expect hija installata sewwa, tista 'tużaha bħala:

vgrind - fajl ta 'l-iskrin

EŻEMPJI

Ħafna ma jkunux apparenti kif tpoġġi kollox flimkien li l-paġna man jiddeskrivi. Inħeġġeġ biex taqra u tipprova l-eżempji fid-direttorju ta 'l-eżempji tad-distribuzzjoni Ettwe . Xi wħud minnhom huma programmi reali. Oħrajn huma sempliċement illustrattivi ta 'ċerti tekniki, u naturalment, koppja huma biss hacks ta' malajr. Il-fajl INSTALL għandu ħarsa ġenerali ta 'malajr ta' dawn il-programmi.

Il-karti Espera (ara ARA WKOLL) huma utli wkoll. Filwaqt li xi karti jużaw sintassi li jikkorrispondu għal verżjonijiet preċedenti ta 'Ejja, ir-razzjonijiet li jakkumpanjawhom għadhom validi u jmorru f'dettall ħafna aktar minn din il-paġna manwali.

CAVEATS

L-estensjonijiet jistgħu jikkonfliġġu mal-ismijiet tal-kmand ta 'l-Eżekuttiv Per eżempju, jibgħat huwa ddefinit minn Tk għal skop kompletament differenti. Għal din ir-raġuni, il-biċċa l-kbira tal-kmandi Expect huma wkoll disponibbli bħala "exp_XXXX". Kmandijiet u varjabbli li jibdew b '"exp", "inter", "spawn", u "timeout" m'għandhomx psewdonimi. Uża l-ismijiet tal-kmand estiż jekk għandek bżonn din il-kompatibilità bejn l-ambjenti.

Jistenna li jkun hemm fehma pjuttost liberali dwar l-ambitu. B'mod partikolari, il-fatturi varjabbli li jinqraw mill-kmandi speċifiċi għall-programm Expect se jiġu mfittxija l-ewwel mill-ambitu lokali, u jekk ma jinstabux, fl-ambitu globali. Pereżempju, dan jevita l-ħtieġa li jqiegħed "skadenza globali" f'kull proċedura li tikteb li tuża l-użi. Min-naħa l-oħra, il-varjabbli miktuba huma dejjem fl-ambitu lokali (sakemm ma jkunx inħareġ kmand "globali"). L-aktar problema komuni li tikkawża hija meta t-tnissil jitwettaq fi proċedura. Barra l-proċedura, spawn_id m'għadux jeżisti, għalhekk il- proċess imwarrab m'għadux aċċessibbli sempliċement minħabba l-ambitu. Żid "spawn_id globali" għal din il-proċedura.

Jekk ma tistax tagħmilha possibbli l-kapaċità ta 'ħafna spejjeż (jiġifieri s-sistema tiegħek ma tappoġġja la tagħżel (BSD *. *), Stħarriġ (SVR> 2), u lanqas xi ħaġa ekwivalenti), tistenna biss tkun tista' tikkontrolla proċess wieħed kull darba. F'dan il-każ, ma tippruvax issettja spawn_id , u lanqas m'għandek tesegwixxi l-proċessi permezz ta 'l-eżekuzzjoni waqt li proċess imniedi qed jaħdem. Barra minn hekk, mhux se tkun tista ' tistenna minn proċessi multipli (inkluż l-utent bħala wieħed) fl-istess ħin.

Il-parametri tat-terminali jista 'jkollhom effett kbir fuq skripts. Pereżempju, jekk kitba tinkiteb biex tfittex echoing, hija se takkwista ħażin jekk it-teħid ta 'l-ekosistemi huwa mitfi. Għal din ir-raġuni, Esperti tevita parametri sane terminali awtomatikament. Sfortunatament, dan jista 'jagħmel affarijiet spjaċevoli għal programmi oħra. Bħala eżempju, il-qoxra tal-emacs trid tibdel l-immappjar "tas-soltu": linji ġodda jiġu mapjati għal linji ġodda minflok linji ġodda ta 'trasport-ritorn, u l-echoing huwa diżattivat. Dan jippermetti li wieħed juża emacs biex jeditja l-linja ta 'l-input. Sfortunatament, tistenna li ma tistax tirbaħ dan.

Tista 'titlob li tistenna li ma tissuperax l-issettjar default tal-parametri tat-terminals, imma imbagħad trid tkun attent ħafna meta tikteb skripts għal tali ambjenti. Fil-każ ta 'emacs, jevita li jiddependi fuq affarijiet bħal ekosistemi u mapep ta' tmiem il-linja.

L-ordnijiet li l-argumenti aċċettati kienu mmexxija f'lista waħda (il-varjanti tal- istennija u l- interazzjoni ) jużaw heuristiku biex jiddeċiedu jekk il-lista hijiex attwalment argument wieħed jew ħafna. L-heuristiku jista 'jonqos biss fil-każ meta l-lista fil-fatt tirrappreżenta argument wieħed li fih ħafna inkorporati ma' karattri mhux ta 'spazju vojt bejniethom. Dan jidher improbabbli biżżejjed, madankollu l-argument "-nobrace" jista 'jintuża biex jġiegħel argument wieħed li jiġi ttrattat bħala argument wieħed. Dan jista 'jiġi konċepibbli jintuża b'kodiċi ta' Eċċezza maħluqa mill-magna. Bl-istess mod, -braċċi jġiegħel argument wieħed li għandu jiġi ttrattat bħala mudelli / azzjonijiet multipli.

BUGS

Kien verament jitħajjar li jissejjaħ il-programm "sess" (għal "Smart EXec" jew "Send-Expect"), iżda kien hemm sens tajjeb (jew forsi sempliċement puritaniżmu).

F'xi sistemi, meta qoxra tiġġenera, tilmenta dwar li ma tkunx tista 'taċċessa t-tty iżda tmur xorta waħda. Dan ifisser li s-sistema tiegħek għandha mekkaniżmu biex tikseb il-kontroll tat-tty li tistenna ma tafx. Jekk jogħġbok taf x'inhu, u ibgħat din l-informazzjoni lura lili.

Ultrix 4.1 (għallinqas l-aħħar verżjonijiet madwar hawn) jikkunsidra t-timeouts ta 'aktar minn 1000000 bħala ekwivalenti għal 0.

Digital UNIX 4.0A (u probabbilment verżjonijiet oħra) jirrifjuta li jalloka ptys jekk tiddefinixxi handler SIGCHLD. Ara l-paġna tal-għotja għal aktar tagħrif.

IRIX 6.0 ma jimmaniġġax il-permessi tal-pty b'mod korrett b'tali mod li jekk l-attentati ta 'l-Eċċezzjonijiet jallokaw pty li qabel kien użat minn xi ħadd ieħor, jonqos. Aġġorna għal IRIX 6.1.

Telnet (ivverifikat biss taħt SunOS 4.1.2) jiddellek jekk it-TERM mhuwiex stabbilit. Din hija problema taħt cron, fi u fi skripts cgi, li ma jiddefinixxix TERM. Għalhekk, għandek issettjaha espliċitament - għal liema tip ġeneralment tkun irrilevanti. Huwa biss għandu jkun issettjat għal xi ħaġa! Dawn li ġejjin probabbilment huma biżżejjed għall-biċċa l-kbira tal-każijiet.

sett env (TERM) vt100

Tip (ivverifikat biss taħt BSDI BSD / OS 3.1 i386) jiddellek jekk SHELL u HOME mhumiex issettjati. Din hija problema taħt cron , fi u fis- scrips tas- CGI , li ma jiddefinixxux dawn il-varjabbli ambjentali. Għalhekk, għandek issettjahom espliċitament - għal liema tip normalment ma tkunx rilevanti. Huwa biss għandu jkun issettjat għal xi ħaġa! Dawn li ġejjin probabbilment huma biżżejjed għall-biċċa l-kbira tal-każijiet.

sett env (SHELL) / bin / sh sett env (HOME) / usr / local / bin

Uħud mill-implimentazzjonijiet ta 'ptys huma ddisinjati sabiex il-qalba tħalli l-output mhux maqtugħ wara 10 sa 15-il sekonda (in-numru attwali jiddependi fuq l-implimentazzjoni) wara li l- proċess ikun għalaq id-deskrittur tal-fajl. Għalhekk Jistennew programmi bħal

tbid id-data ta 'rqad 20 tistenna

se jonqsu. Biex tevita dan, tinvoka programmi mhux interattivi b'experts minflok tbid . Filwaqt li sitwazzjonijiet bħal dawn huma konċepibbli, fil-prattika qatt ma sibt sitwazzjoni li fiha l-produzzjoni finali ta 'programm verament interattiv titlef minħabba din l-imġieba.

Min-naħa l-oħra, Ptys ta 'Cray UNICOS armi kwalunkwe output mhux maqtugħ minnufih wara li l- proċess għalaq id-deskrittur tal-fajl. Irrapportajt dan lil Cray u qegħdin jaħdmu fuq soluzzjoni.

Kultant dewmien huwa meħtieġ bejn pront u tweġiba, bħal meta interface tty qed tbiddel is-settings UART jew ir-rati tal- baud li jaqblu billi tfittex bidu / waqfien tal-bits. Normalment, dan kollu huwa meħtieġ huwa li torqod għal sekonda jew tnejn. Teknika aktar robusta hija li terġa 'tipprova sakemm il-hardware ikun lest biex jirċievi l-input. L-eżempju li ġej juża ż-żewġ strateġiji:

Ibgħat "veloċità 9600"; sleep 1 jistenna {timeout {jibgħat "\ r"; exp_continue} $ fil-pront}

Il-kodiċi tan-nassa ma jaħdimx bi kwalunkwe kmand li jinsab fil-loop ta 'avvenimenti ta' Tcl, bħalma hu l-irqad. Il-problema hija li fil-loop ta 'l-avveniment, Tcl jarmi l-kodiċijiet tar-ritorn minn maniġġaturi ta' avvenimenti asinki. Ħjiel ta 'xogħol huwa li tiġi stabbilita bandiera fil-kodiċi tan-nassa. Imbagħad iċċekkja l-bandiera immedjatament wara l-kmand (jiġifieri, l-irqad).

Il-kmand expect_background jinjora l-argumenti tal-bidu u m'għandu l-ebda kunċett ta 'timeouts b'mod ġenerali.

& # 34; JISTGĦU HINTS & # 34;

Hemm ftit affarijiet dwar Jistennew li jistgħu jkunu mhux intuwittivi. Din it-taqsima tipprova tindirizza xi wħud minn dawn l-affarijiet bi ftit suġġerimenti.

Problema ta 'stennija komuni hija kif tirrikonoxxi x-xejriet tal-qoxra. Peress li dawn huma personalizzati b'mod differenti minn persuni differenti u qxur differenti, l-awtomatizzazzjoni awtomatika ta 'rlogin tista' tkun diffiċli mingħajr ma tkun taf il-pront. Konvenzjoni raġonevoli hija li l-utenti jaħżnu espressjoni regolari li tiddeskrivi fil-pront (b'mod partikolari, it-tmiem tiegħu) fil-varjabbli ambjentali EXPECT_PROMPT. Tista 'tintuża kodiċi bħal dawn li ġejjin. Jekk EXPECT_PROMPT ma teżistix, il-kodiċi għad għandu ċans tajjeb li jaħdem tajjeb.

sett fil-pront "(% | # | \\ $) $"; # default qabda fil-pront {set prompt $ env (EXPECT_PROMPT)} jistennew -re $ prompt

Inħeġġiġkom biex tikteb mudelli ta 'l- istennija li jinkludu t-tmiem ta' x'ikun tistenna li tara. Dan jevita l-possibbiltà li jwieġeb mistoqsija qabel ma jara l-ħaġa sħiħa. Barra minn hekk, waqt li tkun tista 'twieġeb mistoqsijiet qabel ma tarahom kompletament, jekk twieġeb kmieni, it-tweġiba tiegħek tista' tidher li ġiet imtennija lura fin-nofs tal-mistoqsija. Fi kliem ieħor, id-djalogu li jirriżulta se jkun korrett iżda tħares iddixxjat.

Il-biċċa l-kbira ta 'l-oħrajn jinkludu karattru spazjali fl-aħħar. Per eżempju, il-pront minn ftp huwa 'f', 't', 'p', '>' u. Biex taqbel ma 'din il-pront, trid tqis kull wieħed minn dawn il-karattri. Huwa żball komuni li ma tiġix inkluża l-vojt. Poġġi l-vojt b'mod espliċitu.

Jekk tuża mudell tal-formola X *, il-* se tlaqqa 'l-output irċevut mill-aħħar ta' X sa l-aħħar ħaġa riċevuta. Dan ħsejjes intuwittivi iżda jista 'jkun kemmxejn konfuż minħabba li l-frażi "l-aħħar ħaġa riċevuta" tista' tvarja skond il-veloċità tal-kompjuter u l-ipproċessar ta 'I / O kemm mill-kernel u mis-sewwieq tal-mezz.

B'mod partikolari, il-bnedmin għandhom it-tendenza li jaraw l-output tal-programm li jasal f'biċċiet kbar (atomikament) meta fir-realtà l-biċċa l-kbira tal-programmi jipproduċu output linja waħda kull darba. Jekk wieħed jassumi li dan huwa l-każ, * fid-disinn tal-paragrafu ta 'qabel jista' biss jaqbel mat-tmiem tal-linja kurrenti anki jekk jidher li hemm aktar, minħabba li fiż-żmien tal-logħba kienet l-output kollu li kien irċevut.

jistenna li m'għandu l-ebda mod li jkun jaf li qed joħroġ iktar output sakemm il-mudell tiegħek ma jkunx speċifikament responsabbli għalih.

Anki skont il-buffering orjentat lejn il-linja huwa għaqli. Mhux biss il-programmi rari jagħmlu wegħdiet dwar it-tip ta 'buffering li jagħmlu, iżda l-indiġestjoni tas-sistema tista' tnaqqas il-linji tal-produzzjoni hekk li l-linji jinqasmu f'postijiet apparentement każwali. Għalhekk, jekk tista 'tesprimi l-aħħar ftit karattri ta' pront meta tfassal il-mudelli, huwa għaqli li tagħmel dan.

Jekk qed tistenna mudell fl-aħħar ħruġ ta 'programm u l-programm jarmi xi ħaġa oħra minflok, ma tkunx tista' tidentifika dak bil-kelma ta ' skadenza . Ir-raġuni hija li wieħed jistenna li ma jispiċċax iż-żmien - minflok se jkollu indikazzjoni ta 'l-indikazzjoni. Uża li minflok. Anke aħjar, uża t-tnejn. B'dak il-mod jekk dik il-linja qatt tiċċaqlaq, int mhux se jkollok torganizza l-linja nnifisha.

Linji ġodda huma ġeneralment ikkonvertiti għal ritorn tal-ġarr, sekwenzi tal-linefeed meta joħorġu mis-sewwieq tat-terminal. Għalhekk, jekk trid mudell li espliċitament jaqbel maż-żewġ linji, minn, say, printf ("foo \ nbar"), għandek tuża d-disinn "foo \ r \ nbar".

It-traduzzjoni simili sseħħ meta tinqara mill-utent, permezz ta ' expect_user . F'dan il-każ, meta tagħfas id-dħul, din tkun tradotta f'linja ġdida. Jekk tistenna mbagħad tgħaddi dak lil programm li jistabbilixxi t-terminal tiegħu għal mod mhux maħdum (bħal telnet), se jkun hemm problema, billi l-programm jistenna qligħ veru. (Uħud mill-programmi fil-fatt huma klementi minħabba li se jittraduċu awtomatikament linji ġodda għar-ritorni, iżda ħafna minnhom ma jagħmlux dan.) Sfortunatament, m'hemm l-ebda mod kif issir taf li programm poġġa t-terminal tiegħu f'modalità mhux ipproċessata.

Minflok ma tissostitwixxi manwalment linji ġodda bi prospetti, is-soluzzjoni hija li tuża l-kmand "stty raw", li twaqqaf it-traduzzjoni. Innota, madankollu, li dan ifisser li ma jkollokx aktar il-karatteristiċi tal-editjar tal-linji msajra.

jinteraġixxu impliċitament iwaqqaf it-terminal tiegħek għall-modalità mhux ipproċessata hekk din il-problema ma tinqalax imbagħad.

Ħafna drabi jkun utli li jinħażnu l-passwords (jew informazzjoni privata oħra) fil- Eżekuttiv skripts. Dan mhux irrakkomandat minħabba li kull ħaġa li hija maħżuna fuq kompjuter hija suxxettibbli li tkun aċċessibbli minn kulħadd. B'hekk, l-imġiba interattiv għall-passwords minn kitba hija idea aktar intelliġenti milli tinkorporahom litteralment. Minkejja dan, kultant din l-inkorporazzjoni hija l-unika possibbiltà.

Sfortunatament, is-sistema tal-fajl UNIX m'għandha l-ebda mod dirett ta 'ħolqien ta' skripts li huma eżegwibbli iżda li ma jistgħux jinqraw. Sistemi li jappoġġaw skripts ta 'shell setgid jistgħu indirettament jissimulaw dan kif ġej:

Oħloq l-iskrittura Espera (li fiha d-dejta sigrieta) bħas-soltu. Agħmel il-permessi tagħha ta '750 (-rwxr-x ---) u huma proprjetà ta' grupp ta 'fiduċja, jiġifieri, grupp li jista' jaqraha. Jekk meħtieġ, toħloq grupp ġdid għal dan il-għan. Sussegwentement, toħloq b'kitba / bin / sh permessi 2751 (-rwxr-s - x) proprjetà ta 'l-istess grupp bħal qabel.

Ir-riżultat huwa b'kitba li tista 'tiġi esegwita (u moqrija) minn kulħadd. Meta tkun invokata, hija tmexxi l-iskritt ta 'l- Espett .

& # 34; ARA WKOLL & # 34;

Tcl (3), libexpect (3)
"Spjegazzjoni tistenna: Tcl-Based Toolkit għall-Awtomatizzazzjoni ta 'Programmi Interattivi" minn Don Libes, pp. 602, ISBN 1-56592-090-2, O'Reilly u Associates, 1995.
"jistennew: Li jfejjaq Dawk L-Aċċess Mhux Kontrollabbli ta 'Interattività" minn Don Libes, Proċedimenti tal-Konferenza USENIX tas-Sajf 1990, Anaheim, California, 11-15 Ġunju, 1990.
. "Jien nistenna li Awtomatizza Kompiti ta 'Amministrazzjoni tas-Sistema" minn Don Libes, Proċedimenti tal-Konferenza tal-Amministrazzjoni tas-Sistemi ta' Installazzjoni Kbar tal-1990 USENIX, Colorado Springs, Colorado, 17-19 ta 'Ottubru, 1990.
. I "Tcl: Lingwa ta 'Kmand Inkapsabbli" minn John Ousterhout, Proċedimenti tal-Konferenza ta' l-USENIX tax-Xitwa ta 'l-1990, Washington, DC, Jannar 22-26, 1990..I "jistennew: Skripts għall-Kontroll ta' Programmi Interattivi" minn Don Libes, , Vol. 4, Nru. 2, Ġurnali ta 'l-Istampa ta' l-Università ta 'California, Novembru 1991..I "Testijiet ta' Regressjoni u Konformità Testijiet ta 'Programmi Interattivi", minn Don Libes, Proċedimenti tal-Konferenza USENIX tas-Sajf 1992, pp. 135-144, San Antonio, TX, 12-15 ta 'Ġunju, 1992..I "Kibitz - Konnessjoni ta' Programmi Interattivi Multipli Flimkien", minn Don Libes, Software - Prattika u Esperjenza, John Wiley & Sons, West Sussex, Ingilterra, Vol.

23, Nru 5, Mejju, 1993..I "A Debugger għall-Applikazzjonijiet Tcl", minn Don Libes, Proċedimenti tal-Workshop 1993 Tcl / Tk, Berkeley, CA, 10-11 ta 'Ġunju, 1993.

AWTORITÀ

Don Libes, Istitut Nazzjonali tal-Istandards u t-Teknoloġija

GĦARGĦAT

Grazzi lil John Ousterhout għal Tcl, u Scott Paisley għall-ispirazzjoni. Grazzi lil Rob Savoye għall-kodiċi ta 'l-awtokonfigurazzjoni ta' Expect.

Il-fajl HISTORY jiddokumenta ħafna mill-evoluzzjoni tal- istennija . Jagħmel qari interessanti u jista 'jagħtik aktar tagħrif dwar dan is-software. Grazzi lin-nies imsemmija fiha li bagħtu l-bug fixes u taw assistenza oħra.

Id-disinn u l-implimentazzjoni ta ' Expect tħallsu parzjalment mill-gvern ta' l-Istati Uniti u għalhekk huma fid-dominju pubbliku. Madankollu l-awtur u NIST jixtiequ kreditu jekk dan il-programm u dokumentazzjoni jew partijiet minnhom huma użati.