Ang Linux / Unix Command Nagpaabut

Ang gilauman usa ka programa nga naghisgot sa ubang mga interactive nga programa sumala sa script. Sa pagsunod sa script, ang nahibalo nahibal-an kung unsa ang gilauman gikan sa usa ka programa ug unsa ang angay nga tubag. Ang usa ka hubad nga pinulongan naghatag og mga branching ug high-level control nga mga istruktura aron sa pagdumala sa dialogo. Dugang pa, ang tiggamit makontrolar ug makadugtong nga direkta kung gusto, pagkahuman sa pagbalik sa pagkontrol sa script.

Ang Expectk usa ka sagol sa Expect and Tk. Naglihok kini sama sa gusto sa Expect ug Tk. Ang gilauman mahimo usab nga gamiton direkta sa C o C ++ nga walay Tcl.

Ang ngalan nga "Expect" naggikan sa ideya sa pagpadala / gipaabut nga mga pagkakasunod-sunod nga gipasiugdahan sa uucp, kermit ug uban pang mga programa sa pagkontrol sa modem. Apan dili sama sa uucp, ang Expect mao ang kinatibuk-an aron mahimo kini nga run ingon nga usa ka command-level user nga adunay bisan unsang programa ug buluhaton sa hunahuna. Gilauman nga makapakigsulti sa daghang mga programa sa samang higayon.

Unsay Mahimo sa Paglaum

Pananglitan, ania ang pipila ka mga butang nga mahimo sa gipaabot nga sugo:

Adunay nagkalainlain nga mga hinungdan nganong ang kabhang dili makahimo niini nga mga buluhaton. Ang tanan posible sa Pagpaabut.

Sa kinatibuk-an, ang Paglaum mapuslanon sa pagpadagan sa bisan unsang programa nga nagkinahanglan sa interaksiyon tali sa programa ug sa tiggamit. Ang tanan nga gikinahanglan mao nga ang interaksyon mahimong mailhan pinaagi sa programa. Ang gilauman mahimo usab nga makahatag og kontrol sa tiggamit nga walay pagpugong sa programa nga kontrolado. Sa samang paagi, ang tiggamit mahimong mobalik sa pagkontrol sa script bisan unsang orasa.

Paggamit

Nagpaabut mabasa ang cmdfile alang sa usa ka lista sa mga sugo nga ipatuman. Ang gilauman mahimo nga ipangalan sa mga sistema nga nagsuporta sa #! notasyon pinaagi sa pagmarka sa script isip executable ug paghimo sa unang linya sa script:

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

Siyempre, ang agianan kinahanglan tukmang ihulagway kung asa ang Naglaum nga buhi. / usr / local / bin usa lang ka ehemplo.

Ang -c flag nag-una sa usa ka sugo nga ipatuman sa wala pa sa script. Ang sugo kinahanglan nga gikutlo aron dili maputol ang kabhang. Mahimong gamiton kini nga kapilian sa daghang beses. Ang daghang mga sugo mahimo nga ipatuman sa usa ka -c pinaagi sa pagbulag kanila uban sa mga titik nga mga titik. Ang mga sugo gipatuman sa han-ay nga kini gipakita. Sa diha nga ang paggamit sa Expectk, kini nga kapilian nga gisulti ingon nga-komand.

Ang bandila -d nagpasabot sa usa ka resulta sa diagnostic, nga nag-una nga nagtaho sa kalihokan sa sulod sa mga sugo sama sa pagdahum ug pagkontak. Kini nga bandila adunay parehas nga epekto sama sa "exp_internal 1" sa sinugdanan sa usa ka script sa Expect, ug ang bersyon sa Expect gipatik.

Ang -D nga bandila makahimo sa usa ka interactive debugger. Kinahanglan sundon ang usa ka integer value. Ang debugger magkontrol sa dili pa ang sunod nga proseso sa Tcl kung ang bili dili zero o kon ang usa ^ C gipugos o ang usa ka breakpoint naigo, o uban pang angay nga debugger nga sugo nga makita sa script. Sa diha nga ang paggamit sa Expectk, kini nga kapilian gihinganlan ingon nga - Debug.

Ang -f flag nag-una sa usa ka file nga gikan diin mabasa ang mga comma. Ang bandila mismo opsyonal nga kini mapuslanon lamang sa paggamit sa #! notasyon, aron nga ang uban nga mga argumento mahimo nga ipadala sa command line. Sa diha nga ang paggamit sa Expectk, kini nga kapilian nga ginganlan nga -file.

Sa default, ang command file mabasa sa panumduman ug ipatuman sa kinatibuk-an. Usahay madanihon ang pagbasa sa mga file usa ka linya matag higayon. Aron mapugos ang mga arbitraryong mga file nga pagadumala niini nga paagi, gamita ang -b flag. Sa diha nga ang paggamit sa Expectk, kini nga kapilian nga gisulti ingon nga -buffer.

Kon ang hugpong nga "-" gitagana isip usa ka filename, ang basahon nga basahon gibasa. Gamita ang "./-" sa pagbasa gikan sa usa ka file nga ginganlan nga "-".

Ang -i nga flag nga hinungdan sa Expect sa interactively prompt sa mga sugo sa baylo nga sa pagbasa kanila gikan sa usa ka file. Ang pagtulo gitapos pinaagi sa sugo sa exit o sa EOF. Ang -i nga bandila gituohan kon walay usa ka command file o -c gigamit. Sa diha nga naggamit sa Expectk, kini nga kapilian gihulagway nga -interactive.

- mahimo gamiton aron mabag-o ang katapusan sa mga kapilian. Kini mapuslanon kon gusto ka nga mopasa sa usa ka kapilian-sama nga argumento sa imong script nga wala kini nga gihubad sa Expect. Kini mapuslanon nga ibutang sa #! linya aron mapugngan ang bisan unsa nga pag-usab sa usa ka bandila sa Paglaum. Pananglitan, ang mosunod mobiya sa orihinal nga mga argumento lakip ang ngalan sa script sa variable argv .

#! / usr / local / bin / expect -

Hinumdomi nga ang kasagarang getopt (3) ug pagpatuman (2) nga mga kombensiyon kinahanglan sundon sa pagdugang sa argumento sa #! linya.

Ang file $ exp_library / expect.rc gigamit nga awtomatikong kung anaa, gawas kon ang -N nga bandila gigamit. (Sa diha nga ang paggamit sa Expectk, kini nga kapilian nga gitino nga ingon -NORC.) Diha-diha dayon, ang file ~ / .expect.rc gigamit nga awtomatikong, gawas kon ang -n nga bandila gigamit. Kon ang kahulogan sa kalikopan nga DOTDIR gihubad, kini giisip nga usa ka directory ug .expect.rc gibasa gikan didto. Sa diha nga naggamit sa Expectk, kini nga kapilian nga ginganlan nga -norc. Kini nga pagpangita mahitabo lamang human sa pagpatuman sa bisan unsang -c flags.

-usa ang hinungdan Nagpaabot nga i-imprinta ang numero sa bersyon niini ug mogawas. Ang katugbang nga bandila sa Expectk, nga naggamit sa taas nga mga pangalan sa bandila, mao ang -bugti.

Ang opsyonal nga mga argumento gitukod ngadto sa usa ka lista ug gitipigan sa variable nga ginganlan argv ug. Ang argc nagsugod sa gitas-on sa argv.

Ang Argv0 gihubad nga mao ang ngalan sa script o binary kon walay script nga gigamit. Pananglitan, gisulat sa mosunod ang ngalan sa script ug ang unang tulo ka argumento:

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

Mga sugo

Nagpaabot nga gamit ang Tool Command Language. Ang Tcl naghatag kontrol sa agianan (kon, sa, paglapas), pagpahayag sa pagpahayag ug daghang uban pang mga bahin sama sa recursion ug kahulugan sa pamaagi. Ang mga sugo nga gigamit dinhi apan wala ipasabut (itakda, kung, ang exec) mao ang Tcl nga mga sugo. Nagpaabot nga dugang nga mga sugo. Gawas kon tino nga gitakda, ibalik ang mga sugo sa walay sulod nga pisi.

Ang mga mando gilista sa alpabeto aron kini mahimutang sa madali. Hinuon, ang mga bag-ong tiggamit mahimong mas sayon ​​nga magsugod pinaagi sa pagbasa sa mga paghubit sa pagsabwag, pagpadala, pagdahum, ug pakigsulti, sa maong mando.

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

gitapos ang koneksyon sa kasamtangan nga proseso . Ang kadaghanan nga mga programa sa interaksyon makamatikod sa EOF sa ilang stdin ug exit; mao nga ang suod nga kasagaran igo na aron sa pagpatay sa proseso usab. Ang -i flag nagdeklara sa proseso sa pagtakdo nga katumbas sa ginganlan nga spawn_id.

Ang duha nga gipaabot ug nakig-istorya makamatikod sa diha nga ang kasamtangan nga proseso mogawas ug hingpit nga masul-ob, apan kung imong patyon ang proseso pinaagi sa, pag-ingon, "pagpatay sa $ pid", kinahanglan nga hinganlan ka nga suod .

Ang -onexec flag motino kung ang spawn id gisirado sa bisan unsa nga mga bag-o nga mga proseso nga gipatuman o kung ang proseso napalatas. Sa pagbiya sa usa ka spawn id bukas, gamita ang bili 0. Ang usa ka dili-zero nga integer value nagpugos sa pagsabak nga gisirado sa bisan unsang bag-ong proseso.

Ang bandila sa sungkod nagsirado sa ulipon nga may kalabutan sa spawn id. Sa diha nga ang koneksyon gisirhan, ang ulipon awtomatikong sirado usab kon kini bukas pa.

Bisan kung ang koneksyon gisirado nga tin-aw o tin-aw, kinahanglan nga tawagan ang paghulat aron sa paglimpyo sa katugbang nga proseso sa kernel. Ang duol nga sugo wala magpatawag og paghulat tungod kay wala'y garantiya nga ang pagsira sa usa ka koneksyon sa proseso makapahimo niini nga mogawas.

debug [[-now] 0 | 1]

nagkontrolar sa usa ka Tcl debugger nga nagtugot kanimo sa paglihok pinaagi sa mga pahayag ug paghimo og mga breakpoint.

Sa walay mga argumento, ang 1 gibalik kon ang debugger wala nagdagan, kon dili ang 0 gibalik.

Sa usa ka argumento, gisugdan ang debugger. Uban sa usa ka 0 argumento, ang debugger nahunong. Kon ang usa ka argumento mao ang nag-una sa bag-ong bandila, ang debugger gisugdan dayon. Kay kon dili, ang debugger gisugdan sa sunod nga pamahayag sa Tcl.

Ang sugo sa debug wala mag-usab sa bisan unsang mga lit-ag. Itandi kini sa pagsugod sa Pagpaabut uban sa -D nga bandila.

Ang disconnect command nag-disconnect sa usa ka binuhat nga proseso gikan sa terminal . Kini nagpadayon sa pagdagan sa luyo. Ang proseso gihatagan sa iyang kaugalingong grupo sa proseso. Ang standard I / O gibalhin ngadto sa / dev / null .

Ang mosunod nga tipik naggamit sa pag-disconnect aron ipadayon ang pagpadagan sa script sa background.

kung ang [[fork]! = 0} exit disconnect. . .

Ang mosunod nga script nagbasa sa usa ka password ug dayon nagpadagan sa usa ka programa matag oras nga nagkinahanglan og usa ka password matag higayon nga kini modagan. Ang script naghatag sa pasword aron ikaw kinahanglan lamang sa pag-type niini sa makausa.

send_user "password? \" expect_user -re "(. *) \ n" alang sa {} 1 {} {if {[fork]! = 0} {sleep 3600; 1, hilo) \ r ". . . paggawas

Ang usa ka bintaha sa paggamit sa pagdiskonekta sa kabhang sa asynchronous process feature (&) mao nga ang Expect makaluwas sa mga parameter sa terminal sa wala pa pag-disconnection ug sa ulahi magamit kini sa bag-o nga ptys. Uban &, Nagpaabut wala'y kahigayunan sa pagbasa sa mga parameter sa terminal tungod kay ang terminal nahunong na sa panahon nga Gidahom ang pagdawat sa kontrol.

exit [-mga] [kahimtang]

ang mga hinungdan magdahom nga mogawas o mag-andam sa pagbuhat niini.

Ang flag nga -onexit maoy hinungdan sa sunod nga argumento nga gamiton ingon nga usa ka exit handler. Kung walay argumento, ang kasamtangan nga exit handler ibalik.

Ang -noexit flag hinungdan sa Expect sa pag-andam sa pag-exit apan paghunong sa tinuod nga pagbalik sa kontrol sa operating system. Ang user-defined nga handler gipadagan ingon man usab ang kaugalingong mga handler sa Expect. Wala'y dugang nga Magpaabot nga mga sugo kinahanglan ipatuman. Kini mapuslanon kon ikaw nagpadayon sa Paglaum uban sa laing mga extension sa Tcl. Ang kasamtangan nga tighubad (ug ang nag-unang bintana kung anaa sa Tk nga palibot) magpabilin aron ang uban nga mga Tcl extension makalimpyo. Kon ang pag-uswag sa Expect gitawag pag-usab (bisan pa kini mahitabo kini), ang mga tigdumala dili pag-usab.

Sa paggawas, ang tanan nga koneksyon sa mga gisudlan nga mga proseso gisira. Ang pagsirado mahibal-an ingon nga usa ka EOF pinaagi sa mga proseso nga gisugdan. Ang exit wala'y laing mga lihok gawas sa kon unsa ang normal nga _exit (2) pamaagi. Busa, ang mga proseso nga wala magsusi sa EOF mahimong magpadayon. (Ang nagkalainlaing kondisyon hinungdanon aron mahibal-an, pananglitan, kung unsa ang signal nga gisulat nga usa ka proseso nga gipadala, apan kini ang nagsalig sa sistema, nga kasagaran gitala sa ilalum sa exit (3).) Ang gipanulti nga mga proseso nga nagpadayon sa pagdaghan mapanunod sa init.

status (o 0 kung dili natino) ibalik ingon nga exit status sa Expect . Ang exit hingpit nga gipatuman kung ang katapusan sa script naangkon.

exp_continue [-continue_timer]
Ang sugo exp_continue nagtugot sa iyang kaugalingon sa pagpadayon sa pagpatuman sa baylo sa pagbalik ingon sa naandan. Pinaagi sa default nga exp_continue gibalik ang timer sa timeout. Ang bandila nga -continue_timer magpugong sa timer nga dili na ma-restart. (Tan-awa ang gipaabut alang sa dugang kasayuran.)

exp_internal [-f file] nga bili
nagpahinabo sa dugang nga mga sugo sa pagpadala sa internal nga kasayuran sa diagnostic sa Pagpaabut nga mag- stderr kung ang bili dili zero. Kini nga pag-abut mahimo nga pig-ot kon ang bili mao ang 0. Ang kasayuran sa pag-diagnose naglakip sa matag kinaiya nga nadawat, ug ang matag pagsulay gihimo aron itandi ang kasamtangan nga output batok sa mga sumbanan.

Kon ang opsyonal nga file gihatag, ang tanan nga normal ug debugging nga output gisulat sa maong file (walay sapayan sa bili sa bili ). Ang bisan unsang nangagi nga diagnostic output file gisirad-an.

Ang bandila sa -info nagpahinabo sa exp_internal nga ibalik ang paghulagway sa labing bag-o nga mga argumento nga wala'y info nga gihatag.

exp_open [args] [-i spawn_id]
Nagbalik ang Tcl file identifier nga katumbas sa orihinal nga spawn id. Ang file identifier mahimo gamiton ingon nga kini gibuksan sa Tcl's open command. (Ang spawn id kinahanglan dili na gamiton. Ang paghulat kinahanglan dili ipatuman.

Ang -leaveopen flag nagbilin sa spawn id nga bukas alang sa pag-access pinaagi sa Magpaabot nga mga commands. Ang paghulat kinahanglan nga ipatuman sa spawn id.

exp_pid [-i spawn_id]
nagbalik sa proseso nga id nga katugbang sa karon nga proseso nga gisugdan. Kon ang -i nga bandila gigamit, ang pid mibalik nga katugbang sa nahatag nga spawn id.

exp_send
usa ka alyas alang sa pagpadala .

exp_send_error
usa ka alias sa send_error .

exp_send_log
usa ka alyas alang sa send_log .

exp_send_tty
usa ka alias alang sa send_tty .

exp_send_user
usa ka alias alang sa send_user .

exp_version [[-exit] nga bersyon]
mapuslanon alang sa pagpasalig nga ang script nahisubay sa kasamtangan nga bersyon sa Expect.

Wala'y mga argumento, ang kasamtangan nga bersyon sa Expect gibalik. Kini nga bersyon mahimong ma-encod sa imong script. Kung nahibal-an mo nga wala ka magamit nga mga bahin sa bag-ong mga bersyon, mahimo nimong isulti ang usa ka naunang bersyon.

Ang mga bersikulo naglangkob sa tulo ka numero nga gibulag sa mga tuldok. Una mao ang nag-unang numero. Ang mga script nga gisulat alang sa mga bersiyon sa Gilauman uban sa usa ka lainlaing dagko nga gidaghanon hapit dili gayod mahimo. exp_version nagbalik sa usa ka sayop kon ang dagkong mga numero dili matupngan.

Ikaduha mao ang menor de edad nga gidaghanon. Ang mga sinulat nga gisulat alang sa usa ka bersyon nga adunay usa ka mas gamay nga gidaghanon kay sa kasamtangan nga bersyon mahimong magdepende sa pipila ka bag-ong bahin ug tingali dili modagan. exp_version nagbalik sa usa ka sayop kon ang mga mayor nga mga numero magkapareha, apan ang script nga menor de edad nga gidaghanon mas labaw pa kay sa pagpadayon nga Nagpaabut .

Ang ikatulo usa ka numero nga wala'y bahin sa pagtandi sa bersyon. Hinuon, kini gidugang kung ang pag-apud-apod sa Expect software mausab sa bisan unsang paagi, sama sa dugang nga dokumentasyon o pag-optimize. Gi-reset kini sa 0 sa matag bag-ong gamay nga bersyon.

Uban sa-- it nga bandila, Nagpa-abot ang nagpatik sa usa ka sayup ug paggawas kon ang bersyon wala mausab .

naglaum nga [[-pagpilit] pat1 body1] ... [-pagpili] patn [bodyn]
naghulat hangtud nga ang usa sa mga sumbanan katugbang sa resulta sa usa ka proseso nga gisulat, usa ka gitakda nga panahon nga milabay, o usa ka katapusan nga file. Kung ang kataposang lawas walay sulod, mahimo nga wala kini i-apil.

Ang mga sumbanan gikan sa pinakabag-o nga gidahom nga_dumaan nga sugo hingpit nga gigamit sa wala pa ang uban pang mga sumbanan. Ang mga sumbanan gikan sa pinaka-bag-o nga expect_after nga sugo hingpit nga gigamit human sa uban pang mga sumbanan.

Kung ang mga argumento sa tibuok nga gipaabot nga pahayag nagkinahanglan labaw pa sa usa ka linya, ang tanan nga mga argumento mahimo nga "gisaligan" ngadto sa usa aron malikayan ang pagtapos sa matag linya nga may backslash. Sa usa ka kaso, ang kasagaran nga mga substitutions sa Tcl mahitabo bisan pa sa mga kuptanan.

Kung ang usa ka sumbanan mao ang keyword nga eof , ang katugbang nga lawas ipatuman sa katapusan nga file. Kon ang usa ka sumbanan mao ang timeout sa keyword, ang katugbang nga lawas ipatuman sa panahon nga wala'y mahimo. Kung walay gigamit nga timeout keyword, ang usa ka null nga aksyon nga gipatuman sa panahon nga wala na. Ang default nga timeout nga panahon mao ang 10 segundos apan mahimong ibutang, pananglitan ngadto sa 30, pinaagi sa sugo nga "set timeout 30". Ang usa ka walay katapusan nga timeout mahimo nga gitudlo sa bili -1. Kung ang usa ka sumbanan mao ang default sa keyword, ang katugbang nga lawas ipatuman sa bisan hain nga timeout o end-of-file.

Kung ang usa ka sumbanan motakdo, nan ang katugbang nga lawas ipatuman. gilauman nga mobalik ang resulta sa lawas (o ang walay sulod nga hugpong kung wala ang sumbanan). Kon adunay daghang mga sumbanan nga magkaparis, ang una nga gipakita una gamiton aron mopili og usa ka lawas.

Sa matag higayon nga ang bag-ong output moabot, kini itandi sa matag sumbanan sa han-ay nga kini gilista. Sa ingon, mahimong sulayan nimo ang wala'y usa ka panagsama pinaagi sa paghimo sa katapusang sumbanan nga adunay garantiya nga makita, sama sa usa ka paspas. Sa mga sitwasyon nga walay pagdali, kinahanglan nga gamiton mo ang timeout (sama sa imong buhaton kon ikaw magkasinabtanay sa us aka paagi).

Ang mga sumbanan gihisgotan sa tulo ka paagi. Sa kasagaran, ang mga sumbanan gihisgutan sama sa Tcl's string match command. (Ang ingon nga mga sumbanan susama usab sa mga regular nga ekspresyon sa C-shell nga sagad gitawag nga "glob" nga mga sumbanan). Ang bandila nga -gl mahimo nga gamiton aron sa pagpanalipod sa mga sumbanan nga tingali makahaom sa mga gipaabot nga bandila gikan sa pagbuhat niini. Ang bisan unsang sumbanan nga nagsugod sa "-" kinahanglang panalipdan niini nga paagi. (Ang tanan nga mga hugpong nagsugod sa "-" gitagana alang sa umaabut nga mga kapilian.)

Pananglitan, ang mosunod nga tipik nagapangita alang sa malampuson nga pag-login. (Hinumdomi nga ang pagtangtang gituohan nga usa ka pamaagi nga gihubit sa ubang bahin sa script.)

pagdahum (busy (gibutang nga busy \ n; exp_continue} pakyas sa pag-abort "dili balido nga password" abort timeout abort konektado}

Kinahanglan ang mga kinutlo sa ika-upat nga sumbanan sanglit kini naglangkob sa usa ka luna, nga kon dili magbulag ang sumbanan gikan sa aksyon. Ang mga sumbanan nga adunay sama nga aksyon (sama sa ika-3 ug ika-upat) nagkinahanglan nga maglista sa mga aksyon pag-usab. Mahimo kini nga paglikay pinaagi sa paggamit sa mga estilo sa estilo sa estilo (tan-awa sa ubos). Ang dugang kasayuran sa pag-umol sa mga pattern sa estilo sa globo makita sa Tcl nga manwal.

Ang mga estilo sa regexp nagsunod sa syntax nga gihubit sa regulasyon sa Tcl (mubo alang sa "regular nga ekspresyon") nga sugo. Ang mga sumbanan sa regexp gipailaila pinaagi sa flag -re . Ang nahauna nga panig-ingnan mahimong isulat pag-usab gamit ang regexp nga:

pagdahum (busy (gibutang nga busy \ n; exp_continue} -re "napakyas | dili balido nga password" abort timeout abort konektado}

Ang duha ka matang sa mga sumbanan mao ang "wala'y kasayuran". Kini nagpasabot nga ang mga sumbanan dili kinahanglan nga mohaum sa tibuok nga hugpong, apan mahimo magsugod ug taposon ang duwa sa bisan asa sa hilo (basta ang mga butang nga katumbas). Paggamit ^ aron itandi ang sinugdanan sa hugpong, ug ang $ aron pagtagbo sa katapusan. Hinumdomi nga kon dili ka maghulat sa katapusan sa usa ka lambo, ang imong mga tubag daling mahuman sa tunga sa hugpong samtang kini gisubli gikan sa gisangputan nga proseso. Samtang nagpatunghag husto nga mga resulta, ang resulta mahimong dili tan-awon. Busa, ang paggamit sa $ giawhag kung mahimo nimo tukmang ihulagway ang mga karakter sa katapusan sa usa ka hilo.

Timan-i nga sa daghang mga editor, ang ^ ug $ nagatugma sa sinugdanan ug katapusan sa mga linya sumala sa gidaghanon. Bisan pa, tungod kay ang gipaabot dili oriented line, kini nga mga karakter nagtumbok sa sinugdanan ug kataposan sa datos (sukwahi sa mga linya) karon sa gipaabot nga buffer matching. (Dugang pa, tan-awa ang nota sa ubos sa "dili pagtakod sa sistema.")

Ang -ex nga bandera nagpahinabo nga ang sumbanan nga itandi ingon nga usa ka "eksaktong" hilo. Walay gihubad nga interpretasyon sa *, ^, ug uban pa nga gihimo (bisan pa ang naandan nga Tcl nga mga kombensiyon kinahanglan pa nga maobserbahan). Ang mga eksaktong sumbanan kanunay nga wala'y kasabutan.

Ang bandila sa -nocase maoy hinungdan sa dagkong mga karakter sa output nga itandi ingon nga kini gamay nga mga karakter. Ang sumbanan dili apektado.

Samtang nagbasa sa output, labaw pa kay sa 2000 bytes ang makapugos sa sayo nga mga byte nga "makalimtan". Mahimo kini mausab sa function match_max . (Hinumdumi nga ang sobra ka dako nga mga hiyas makapahuyang sa sundanan nga tigparis.) Kon ang patlist puno sa full_buffer , ang katugbang nga lawas ipatuman kung ang match_max bytes nadawat ug walay lain nga mga sumbanan nga gipares. Kung gigamit man o dili ang full_buffer keyword, ang mga nakalimtan nga mga karakter gisulat sa expect_out (buffer).

Kung patched ang keyword nga null , ug nulls ang gitugutan (pinaagi sa command remove_nulls ), ang katugbang nga lawas ipatuman kon ang usa ka ASCII 0 matupngan. Dili posible nga ipares 0 bytes pinaagi sa glob o regexp nga mga sumbanan.

Sa pagkapareha sa usa ka sumbanan (o eof o full_buffer), ang bisan unsang katugbang ug wala pa masulbad nga output ang maluwas sa variable nga expect_out (buffer) . Hangtud sa 9 ka regexp substring nga mga tugma ang maluwas sa mga variable nga expect_out (1, hut-ong) pinaagi sa expect_out (9, string) . Kon ang -indices flag gigamit sa atubangan sa usa ka sumbanan, ang pagsugod ug katapusan nga mga indeks (sa usa ka porma nga angay sa lrange ) sa 10 ka mga hugpong gitipigan sa mga variable nga expect_out (X, pagsugod) ug expect_out (X, katapusan) kung diin ang X usa ka digit, katumbas sa posisyon sa substring sa buffer. 0 nagpasabut sa mga hilisgutan nga nahiuyon sa tibuok nga sumbanan ug gipatungha alang sa mga sumbanan sa kalibutan ingon usab sa mga sumbanan sa regexp. Pananglitan, kung ang usa ka proseso nagpatunghag output sa "abcdefgh \ n", ang sangputanan sa:

pagdahum "cd"

mao ang ingon nga ang mosunod nga mga pahayag gipatuman:

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

ug ang "efgh \ n" gibilin sa buffer output. Kung ang usa ka proseso nagpatungha sa output nga "abbbcabkkkka \ n", ang resulta sa:

nagpaabot -indices -re "b (b *). * (k +)"

mao ang ingon nga ang mosunod nga mga pahayag gipatuman:

set expect_out (0, pagsugod) 1 set expect_out (0, string) bbbcabkkkk set expect_out (1, magsugod) 2 set expect_out (1, katapusan) 3 set expect_out (1, string) bb set expect_out (2, magsugod) 10 set expect_out (2, kataposan) 10 set expect_out (2, string) k set expect_out (buffer) abbbcabkkkk

ug "usa \ n" ang nahibilin sa buffer output. Ang sumbanan nga "*" (ug -re ". *") Magwagtang sa buffer output nga dili na magbasa pa sa proseso.

Kasagaran, ang katugbang nga output gilabay gikan sa mga buffer sa sulod sa Expect. Mahimo kining mapugngan pinaagi sa pag-prefix sa usa ka sumbanan sa -notransfer flag. Kini nga bandila labi ka mapuslanon sa pag-eksperimento (ug mahimo nga minubo sa "dili" alang sa kasayon ​​samtang eksperimento).

Ang spawn id nga may kalabutan sa katugbang nga output (o eof o full_buffer) gitipigan sa expect_out (spawn_id) .

Ang timeout nga flag ang hinungdan sa kasamtangan nga expect nga command nga gamiton ang mosunod nga bili ingon nga usa ka timeout imbis nga gamiton ang bili sa timeout nga variable.

Sa tinuud, ang mga sumbanan gitakdo batok sa output gikan sa kasamtangan nga proseso, apan ang -i flag nagdeklarar nga ang output gikan sa ginganlan nga spawn_id nga listahan nga matupngan batok sa bisan unsang mosunod nga mga sumbanan (hangtod sa sunod nga -i ). Ang lista sa spawn_id kinahanglan nga usa ka whitespace separated list sa spawn_ids o usa ka variable nga nagtumong sa usa ka lista sa spawn_ids.

Pananglitan, ang mosunod nga pananglitan naghulat alang sa "konektado" gikan sa kasamtangan nga proseso, o "busy", "napakyas" o "dili tinuod nga password" gikan sa spawn_id nga ginganlan sa $ proc2.

nagpaabot sa {-i $ proc2 busy {gibutang nga busy \ n; exp_continue} -re "napakyas | dili balido nga password" abort timeout abort konektado}

Ang bili sa global variable nga any_spawn_id mahimo nga gamiton aron itandi ang mga sumbanan sa bisan unsang mga spawn_ids nga ginganlan uban sa tanan nga uban nga mga bandila -i sa kasamtangan nga gipaabot nga sugo. Ang spawn_id gikan sa usa -i flag nga walay susama nga sumbanan (ie, dayon gisundan sa laing -i ) mahimong magamit sa bisan unsa nga lain nga mga sumbanan sa samang gidahom nga sugo nga may kalabutan sa bisan unsang_spawn_id.

Ang -i flag mahimo usab nga pagngalan sa usa ka global nga variable nga diin ang mga variable nga mabasa alang sa usa ka lista sa mga spawn ids. Ang lain-lainan mabasa pag-usab kung kini mausab. Kini naghatag sa usa ka paagi sa pagbag-o sa I / O nga tinubdan samtang ang sugo gipatuman. Ang mga spawn id nga gihatag niini nga paagi gitawag nga "dili direkta" spawn ids.

Mga aksyon sama sa paglapas ug pagpadayon sa pagpugong nga mga istruktura (ie, alang , proc ) sa paggawi sa naandan nga paagi. Ang sugo exp_continue nagtugot sa iyang kaugalingon sa pagpadayon sa pagpatuman sa baylo sa pagbalik ingon sa naandan.

Kini mapuslanon sa paglikay sa tin-aw nga mga loops o balik-balik nga ang mga pahayag. Ang mosunod nga panig-ingnan kabahin sa usa ka tipik sa pag-automate sa rlogin. Ang exp_continue naglikay sa pagsulat sa usa ka ikaduha nga gipaabot nga pamahayag (sa pagpangita sa aghat pag-usab) kon ang rlogin nag-aghat alang sa usa ka password.

Hinumdomi nga ang password nga gipadala sa $ host sa $ host: "expect_user -re" (. *) \ n "send_user" \ n "ipadala" $ expect_out (1, string) \ r "stty echo exp_continue} dili eksakto {send_user "dili balido nga password o account \ n" exit} timeout {send_user "koneksyon ngadto sa $ host gitakda nga exit} eof {send_user \" koneksyon sa host nga napakyas: $ expect_out (buffer) "exit} - re $ prompt}

Pananglitan, ang mosunod nga fragment mahimong makatabang sa usa ka user nga mogiya sa usa ka interaction nga na-automated na. Sa kini nga kaso, ang terminal gibutang sa hilaw nga paagi. Kon ang user nagapugos "+", usa ka variance ang giporma. Kon ang "p" gipugos, daghang mga pagbalik ang gipadala sa proseso, tingali aron usbon kini sa usa ka paagi, ug ang "i" magpahigayon sa user sa proseso, sa epektibong pagkawat sa kontrol gikan sa script. Sa matag kaso, ang exp_continue nagtugot sa kasamtangang pagdahum nga magpadayon sa pagpares sa panagsunod human sa pagpatuman sa kasamtangan nga aksyon.

stty raw -echo expect_after {-i $ user_spawn_id "p" {send "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "ako" (nakig-istorya; exp_continue} "mohunong" nga exit

Sa default, exp_continue nagresetar sa timer sa timeout. Ang timer wala ma-restart, kung exp_continue gitawag sa -continue_timer flag.

expect_after [expect_args]
nagtrabaho nga managsama sa mga gipaabut_sa kausa gawas kung kung ang mga sumbanan gikan sa mga gipaabot ug expect_after mahimong magkaparis, ang gipaabot nga sumbanan gigamit. Tan-awa ang expect_before nga sugo alang sa dugang kasayuran.

expect_background [expect_args]
nagkinahanglan sa sama nga mga argumento sama sa gipaabut , bisan pa niana kini mobalik dayon. Ang mga sumbanan ginasulayan bisan kanus-a moabot ang bag-ong input. Ang sumbanan nga timeout ug default wala'y kahulogan sa expect_background ug hilom nga gilabay. Kay kon dili, ang expect_background command naggamit expect_bago ug expect_after patterns sama sa gipaabot .

Kung ang mga pagdumala sa expect_background gibantayan , ang pagproseso sa background alang sa samang spawn id gibabagan. Ang pagproseso sa background gibuksan pag-usab sa dihang nahuman ang aksyon. Samtang ang pagproseso sa background gibabagan, posible nga buhaton ang usa ka (foreground) nga magdahum sa sama nga spawn id.

Dili posible nga ipatuman ang usa ka gipaabot samtang usa ka expect_background ang gibuksan nga wala'y kanser . expect_background alang sa usa ka partikular nga spawn id ang mabawi pinaagi sa pagdeklara sa usa ka bag-ong expect_background nga adunay sama nga spawn id. Ang pagdeklarar sa expect_background nga walay hulagway magwagtang sa gihatag nga spawn id gikan sa abilidad sa pagpares sa mga sumbanan sa background.

expect_before [expect_args]
nagkinahanglan sa sama nga mga argumento sama sa gipaabut , bisan pa niana kini mobalik dayon. Ang mga parisan sa aksyon-aksyon gikan sa pinakabag-o nga gidahom-sa wala pa uban sa samang spawn id hingpit nga gidugang sa bisan unsa nga mosunod nga mga komon nga gilauman . Kon ang usa ka sumbanan magkaparis, kini pagaisipon ingon nga kini gitino sa gipaabot nga sugo mismo, ug ang nalakip nga lawas gipatuman sa konteksto sa gipaabot nga sugo. Kon ang mga sumbanan gikan sa umaabot nga_sa paabot ug nagpaabot mahimong magkaparis, ang us aka us aka-abot nga sumbanan gigamit.

Kung walay sumbanan ang gitino, ang id sa spawn dili susihon alang sa bisan unsang mga sumbanan.

Gawas kon gibutang sa usa ka-i nga bandila, magdahom-sa dili pa magsunod ang mga sumbanan batok sa spawn id nga gihubit sa panahon nga ang gipaabut- sa wala pa ipatuman ang sugo (dili kon ang panig-angay niini).

Ang bandila sa -info nagpaabut nga magdahom- sa dili pa ibalik ang mga paghulagway karon kung unsa ang mga sumbanan nga itandi niini. Sa kasagaran, kini nagtaho sa kasamtangan nga spawn id. Ang usa ka opsyonal nga spawn id specification mahimo nga ihatag alang sa kasayuran nianang spawn id. Pananglitan

expect_before -info -i $ proc

Sa kadaghanan ang usa ka spawn id specification mahimong ihatag. Ang bandila-nga dili direkta nga mopugong sa direkta nga mga spawn id nga moabut lamang gikan sa dili direkta nga mga detalye.

Imbis nga usa ka spawn id specification, ang bandila "-all" maoy hinungdan sa "-info" sa pagreport sa tanan nga mga spawn ids.

Ang output sa mga bandila nga -info mahimo nga gamiton pag-usab ingon nga argumento nga magdahom-sa wala pa.

expect_tty [expect_args]
sama sa gipaabut apan kini nagbasa sa mga karakter gikan sa / dev / tty (ie mga keystroke gikan sa user). Sa kasagaran, ang pagbasa gihimo sa luto nga paagi. Busa, ang mga linya kinahanglan nga matapos uban ang usa ka pagbalik aron sa pagdahum nga makita kini. Mahimo kini mausab pinaagi sa stty (tan-awa ang stty command sa ubos).

expect_user [expect_args]
sama sa gipaabut apan kini nagabasa sa mga karakter gikan sa stdin (pananglitan mga pagpintal gikan sa user). Sa kasagaran, ang pagbasa gihimo sa luto nga paagi. Busa, ang mga linya kinahanglan nga matapos uban ang usa ka pagbalik aron sa pagdahum nga makita kini. Mahimo kini mausab pinaagi sa stty (tan-awa ang stty command sa ubos).

tinidor
nagmugna og bag-ong proseso . Ang bag-ong proseso usa ka eksaktong kopya sa kasamtangan nga Magpaabot nga proseso . Sa kalampusan, ang sanga mobalik 0 ngadto sa proseso sa bag-ong (bata) ug ibalik ang proseso ID sa proseso sa bata ngadto sa proseso sa ginikanan. Sa kapakyasan (kanunay nga tungod sa kakulang sa mga kahinguhaan, pananglitan, swap nga luna, panumduman), ang fork nagbalik-balik -1 sa proseso sa ginikanan, ug wala'y proseso sa bata nga gimugna.

Ang mga proseso nga napalong gikan sa exit nga sugo, sama sa orihinal nga proseso . Ang gitago nga mga proseso gitugutan sa pagsulat sa mga file sa log. Kon dili mo pag-disable ang pag-debug o pag-log sa kadaghanan sa mga proseso, ang resulta mahimong makalibog.

Ang pipila ka mga pagpatuman mahimong malibog sa daghang mga magbabasa ug mga magsusulat, bisan sa makadiyot. Busa, kini mao ang labing luwas nga makadaot sa dili pa magsanay.

makig-istorya [string1 body1] ... [stringn [bodyn]]
naghatag kontrol sa kasamtangan nga proseso sa gumagamit, aron ang mga keystroke ipadala sa kasamtangan nga proseso , ug ang stdout ug stderr sa kasamtangan nga proseso ibalik.

Ang mga pares nga mga pares sa lawas mahimo nga matino ingon nga mga argumento, nga diin ang lawas gipatuman sa diha nga ang katugbang nga hugpong gisulod. (Sa baylo, ang hilo dili ipadala sa kasamtangan nga proseso .) Ang mando sa interpreter gituohan, kon ang katapusan nga lawas wala na.

Kon ang mga argumento sa tibuok nga pahayag nga gikinahanglan nagkinahanglan og labaw pa kay sa usa ka linya, ang tanan nga mga argumento mahimo nga "gisaligan" ngadto sa usa aron malikayan ang pagtapos sa matag linya nga may backslash. Sa usa ka kaso, ang kasagaran nga mga substitutions sa Tcl mahitabo bisan pa sa mga kuptanan.

Pananglitan, ang mosunod nga komandante nagpadugtong sa mosunod nga mga pares nga hugpong sa lawas nga gihubit: Sa diha nga ang ^ Z gipugos, ang gipaabut gisuspinde. (Ang -reset nga flag nagpasig-uli sa terminal mode.) Sa diha nga ^ A gipugos, ang user nakakita "imong gi-type ang kontrol-A" ug ang proseso gipadala usa ^ A. Kon ang $ gipugos, ang user nakakita sa petsa. Sa diha nga ^ C gipugos, Nagpaabut sa mga paggawas. Kon ang "foo" gisulod, ang user nakakita sa "bar". Sa diha nga ~ ~ gipugos, ang Interpreter sa Paglaum modagan sa interactively.

ipahimutang ang CTRLZ \ 032 makig-istorya {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "inyong gi-type ang kontrol -A \ n"; ipadala "\ 001"} $ {send_user "Ang petsa mao ang [format sa orasan [oras nga segundo]]."} \ 003 exit foo {send_user "bar"} ~~}

Diha sa mga parisan sa hilo, ang mga hilo giparis sa han-ay nga kini gilista isip argumento. Ang mga hagdan nga dili paigo nga bahin wala ipadala sa kasamtangan nga proseso sa pagpaabut sa nahibilin nga pag-abot. Kung ang mga karakter dayon mosulod nga wala nay mahimo nga usa ka pagparis, ang bahin lamang sa hilo ipadala ngadto sa proseso nga dili mahimo nga magsugod sa laing dula. Busa, ang mga hugpong nga substrings sa partial nga mga posporo mahimong motakdo sa ulahi, kung ang orihinal nga mga hugpong nga naningkamot nga mahimong katapusan mahimong mapakyas.

Sa baylo, ang hugpong sa hilis ang eksakto nga walay mga kard nga liyon . (Sa kasukwahi, ang gipaabot nga sugo naggamit sa mga sumbanan sa estilo sa globo nga dili pormal.) Ang -ex nga bandila mahimong magamit aron sa pagpanalipod sa mga sumbanan nga tingali magkapares sa mga interact nga mga bandila gikan sa pagbuhat niini. Ang bisan unsang sumbanan nga nagsugod sa "-" kinahanglang panalipdan niini nga paagi. (Ang tanan nga mga hugpong nagsugod sa "-" gitagana alang sa umaabut nga mga kapilian.)

Ang -mga bandila nagpugos sa hilo nga mahubad isip usa ka sumbanan nga estilo sa regexp. Sa kini nga kaso, ang mga substrings nga gitapad nga gitipigan sa variable nag- interact_out susama sa paagi nga ang mga tindahan magdahum nga ang output niini sa variable nga expect_out . Ang bandila sa -dugang gipaluyohan usab.

Ang sumbanan nga nagpaila sa usa ka aksyon nga gipatuman sa katapusan-sa-file. Ang usa ka lahi nga sumbanan mahimo usab nga mosunod sa -output nga bandila diin kini giparis kon ang usa ka e-detected samtang nagsulat output. Ang default nga aksyon mao ang "pagbalik", aron ang pakigsulti lamang mobalik sa bisan unsang EOF.

Ang sulud sa oras nga panahon nagpaila sa usa ka timeout (sa mga segundo) ug aksyon nga gipatuman human wala'y mga karakter nga nabasa sulod sa usa ka panahon. Ang sumbanan sa timeout magamit sa labing bag-o nga gitino nga proseso . Walay default timeout. Ang espesyal nga variable nga "timeout" (nga gigamit sa gipaabot nga sugo) wala makaapekto niini nga timeout.

Pananglitan, ang mosunod nga pahayag mahimong gamiton sa mga tiggamit sa autologout nga wala mag-type sa bisan unsang butang sulod sa usa ka oras apan kanunay nga adunay mga mensahe sa sistema:

makig-uban -gigamit $ user_spawn_id timeout 3600 balik-output \ $ spawn_id

Kon ang sumbanan mao ang null , ug ang nulls gitugutan (pinaagi sa command sa remove_nulls ), ang katugbang nga lawas ipatuman kon ang usa ka ASCII 0 ang gipares. Dili posible nga ipares 0 bytes pinaagi sa glob o regexp nga mga sumbanan.

Pag-una sa usa ka sumbanan nga may flag -iwrite ang hinungdan sa variable interact_out (spawn_id) nga ibutang sa spawn_id nga nahiangay sa sumbanan (o eof).

Mga aksyon sama sa paglapas ug pagpadayon sa pagpugong nga mga istruktura (ie, alang , proc ) sa paggawi sa naandan nga paagi. Apan ang pagbalik mobalik ang mga hinungdan sa pagbalik ngadto sa nagtawag niini, samtang ang inter_return hinungdan nga makapakigsulti sa paghatag sa usa ka pagbalik sa iyang tumatawag. Pananglitan, kon ang "proc foo" gitawag nga nakig-interact nga nagpatuman sa aksyon inter_return , ang proc foo mobalik. (Kini nagpasabot nga kung ang interbyu sa tawag nga interpreter sa interactively typing return makapahimo sa interact nga magpadayon, samtang ang inter_return makahimo sa interact nga mobalik ngadto sa iyang tumatawag.)

Atol sa pakigsulti , ang hilaw nga paagi gigamit aron ang tanang mga karakter mahimong ipasa ngadto sa kasamtangan nga proseso . Kon ang kasamtangan nga proseso dili makadakop sa mga signal sa pagpugong sa trabaho, mohunong kini kon magpadala sa usa ka stop signal (sa default ^ Z). Aron ibalik kini, ipadala ang nagpadayon nga signal (sama sa "kill -CONT"). Kung gusto ka magpadala sa SIGSTOP sa ingon nga proseso (sa ^ Z), hunahunaa una ang pagpasanay sa csh ug dayon pagpadagan sa imong programa. Sa pihak nga bahin, kon gusto ka magpadala sang SIGSTOP sa Pagpaabot sang iya kaugalingon, una nga pagtawag sang interpreter (ayhan paagi sa paggamit sang isa ka kinagaw nga karakter), kag dayon i-press ^ Z.

Ang mga paris nga mga paris nga lawas mahimong gamiton ingon nga usa ka sumbanan sa paglikay sa pagsulod sa interpreter ug pagpatuman sa mga sugo sa interactively. Ang nauna nga terminal mode gigamit samtang ang lawas sa usa ka pares sa lawas nga lawas gipatuman.

Alang sa tibook nga pagsingkamot, ang mga lihok sa pagpatuman sa hilaw nga paagi pinaagi sa default Ang -reset nga bandila mibalik sa terminal sa mode nga kini sa wala pa ang interact gipatuman (kanunay, linuto nga mode). Hinumdumi nga ang mga karakter nga gisulod sa dihang ang mode gipaagi mahimong mawala (usa ka dili maayo nga bahin sa terminal driver sa pipila ka mga sistema). Ang bugtong rason nga gamiton -reset kon ang imong aksyon depende sa pagdagan sa luto nga paagi.

Ang bandila sa -echo nagpadala sa mga karakter nga nahiuyon sa mosunod nga sumbanan balik sa proseso nga nakamugna niini samtang ang matag karakter mabasa. Mahimong mapuslanon kini kung ang user kinahanglan nga makakita sa feedback gikan sa tipikal nga mga sumbanan nga gi-type.

Kung ang usa ka sumbanan gipalanog apan sa kadugayan dili matandi, ang mga karakter gipadala ngadto sa proseso nga gisugdan. Kon ang gisangputan nga proseso unya mopalanog kanila, ang user makit-an ang mga karakter kaduha. -o0o tingali angay lamang sa mga sitwasyon diin ang user dili tingali makompleto ang sumbanan. Pananglitan, ang mosunod nga kinutlo gikan sa rftp, ang recursive-ftp script, diin ang user giaghat nga mosulod ~ g, ~ p, o ~ l, aron makuha, ibutang, o ilista ang direktang direkta nga direktoryo. Kini layo kaayo sa mga normal nga mga sugo sa ftp, nga ang tiggamit dili tingali sa pag-type ~ nga gisundan sa bisan unsa pa, gawas sa sayop nga paagi, nga sa maong kahimtang, tingali dili nila ibalewala ang resulta.

makig-uban {-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}

Ang -nobuffer flag nagpadala sa mga karakter nga mosibo sa mosunod nga sumbanan sa proseso sa output samtang ang mga karakter gibasa.

Kini mapuslanon kung gusto nimo ipaagi ang programa balik sa sumbanan. Pananglitan, ang mosunod mahimong magamit sa pag-monitor kung diin ang usa ka tawo nga nanawag (usa ka estilo sa Hayes-style). Sa matag higayon nga "at" makita ang script nga nag log sa nahabilin nga linya.

"log-comma-s" {interact -nobuffer -re "(. *) \ r" mobalik nagbutang sa $ log "[format sa orasan [oras nga segundo]]: gi-dial $ interact_out (1,

Atol sa pakigsulti , ang una nga paggamit sa log_user wala panumbalinga. Sa partikular, ang pag- interact magpugos sa iyang output nga ma-log (gipadala ngadto sa standard nga output) tungod kay kini gituohan nga ang user dili gusto nga makiglantugi nga binuta.

Ang -o nga bandila maoy hinungdan sa bisan unsang mosunod nga mga parisan-sa lawas nga mga paris nga ipatuman sa resulta sa kasamtangan nga proseso . Mahimong mapuslanon kini, sama pananglit, sa pag-atubang sa mga host nga nagpadala sa mga wala'y gusto nga mga karakter atol sa sesyon sa telnet.

Sa kasagaran, ang interact nagpaabot sa tiggamit sa pagsulat sa stdin ug pagbasa sa stdout sa proseso sa Expect mismo. Ang -u flag (alang sa "user") makahimo sa pakigsulti sa pagtan-aw sa gumagamit isip proseso nga ginganlan sa argumento (nga kinahanglan nga usa ka spawned id).

Kini nagtugot sa duha ka wala'y kalabutan nga mga proseso nga mahiusa nga walay paggamit sa usa ka dayag nga laang. Aron sa pagtabang sa debugging, Nagpaabut sa mga diagnostics nga kanunay moadto sa stderr (o stdout alang sa pipila nga logging ug debugging nga impormasyon). Tungod sa samang katarungan, ang interpreter command mobasa nga interactively gikan sa stdin.

Pananglitan, ang mosunod nga tipik nagmugna sa proseso sa pag-login. Dayon kini mag-dial sa user (dili gipakita), ug sa katapusan mag-link sa duha nga magkauban. Siyempre, ang bisan unsang proseso mahimo nga ilisan alang sa pag-login. Pananglitan, ang usa ka kabhang, makahimo sa user sa pagtrabaho nga walay paghatag og usa ka account ug password.

spawn login set login $ spawn_id spawn tip modem # dial balik sa user # connect user aron mag-login makig-interact -u $ login

Aron ipadala ang output ngadto sa daghang mga proseso, ilista ang matag lista sa lista nga id nga gisundan sa usa ka -output nga bandila. Ang input alang sa usa ka grupo sa mga spawn id sa output mahimong mahibal-an pinaagi sa usa ka spawn id list nga gi-prefaced sa usa -input flag. (Ang duha- saput ug -output mahimo nga magdala sa mga lista sa sama nga porma sama sa -i flag sa umaabut nga sugo, gawas nga ang any_spawn_id dili makahuluganon sa pakigsulti .) Ang tanan nga mosunod nga mga bandera ug mga hilo (o mga sumbanan) magamit niini nga input hangtud sa lain - Makita ang flag nga input. Kung walay makita, ang -putput nagpasabot "-putput $ user_spawn_id -output". (Sa samang paagi, uban sa mga sumbanan nga wala'y -put .) Kon ang usa-ang gipasabut, kini molabaw sa $ user_spawn_id. Kon ang ikaduha nga- gipasabut , kini mo-override sa $ spawn_id. Dugang nga mga bandila sa puti mahimo nga matino.

Ang duha ka gipasabot nga mga proseso sa pag-input nga sayon ​​sa pag-ila sa ilang output nga $ spawn_id ug $ user_spawn_id (sa reverse). Kung ang usa ka -input nga bandila makita uban ang no -output nga bandila, ang mga karakter nga gikan niana nga proseso gilabay.

Ang -i flag nagpaila sa usa ka kapuli alang sa kasamtangan nga spawn_id kung walay laing mga -input o -output nga mga bandila ang gigamit. Ang bandila sa A -i nagpasabot sa usa -o bandila.

Posible nga usbon ang mga proseso nga nakig-interact pinaagi sa paggamit sa dili direkta nga spawn ids. (Dili direkta nga spawn id nga gihulagway sa seksyon sa gipaabot nga sugo.) Dili direkta nga mga spawn id nga mahimo nga matino uban sa mga -i, -u, -put, o -output flag.

interpreter [args]
maoy hinungdan nga ang user mahimong interactively nga giaghat sa Expect ug Tcl commands. Ang resulta sa matag sugo gipatik.

Mga aksyon sama sa paglapas ug pagpadayon sa pagpugong nga mga istruktura (ie, alang , proc ) sa paggawi sa naandan nga paagi. Apan ang pagbalik mobalik ang mga maghuhubad nga mobalik ngadto sa iyang tumatawag, samtang ang inter_return ang hinungdan sa tighubad nga maoy hinungdan sa usa ka pagbalik sa iyang tumatawag. Pananglitan, kon ang "proc foo" gitawag nga interpreter nga unya gipatuman ang aksyon inter_return , ang proc foo mobalik. Ang bisan unsang laing sugo ang hinungdan sa tighubad aron magpadayon ang pag-aghat alang sa bag-ong mga sugo.

Sa default, ang prompt adunay duha ka integer. Ang una nga integer naghulagway sa giladmon sa evaluation stack (ie, pila ka beses nga gitawag ang Tcl_Eval). Ang ikaduha nga integer mao ang Tcl history identifier. Ang aghat mahimong itakda pinaagi sa paghatag sa pamaagi nga gitawag nga "prompt1" kansang pagbalik sa bili nahimong ang sunod nga aghat. Kung ang usa ka pahayag adunay bukas nga mga kinutlo, parens, braces, o mga brackets, usa ka ikaduhang aghat (sa default "+>") ipagawas sa newline. Ang ikaduhang agianan mahimong itakda pinaagi sa paghatag sa pamaagi nga gitawag nga "prompt2".

Sa panahon sa tighubad , gigamit ang lutoon nga paagi, bisan kung ang tumatawag niini naggamit sa hilaw nga paagi.

Kon ang stdin sirado, ang tighubad mobalik gawas kon gigamit ang -ga nga bandila, diin ang kasunod nga argumento ang gisangpit.

log_file [args] [[-a] file]
Kon ang usa ka filename gihatag, ang log_file magrekord sa transcript sa sesyon (sugod sa punto) sa file. ang log_file mohunong sa pagrekord kon walay argumento nga gihatag. Ang bisan unsang nangaging log file gisirado.

Inay nga usa ka filename, usa ka Tcl file identifier mahimo nga ihatag pinaagi sa paggamit sa -open o -leaveopen flags. Kini susama sa command spawn . (Tan-awa ang spawn alang sa dugang info.)

Ang -a flag nga pwersa nga pwersa nga ma-log nga napugngan sa command log_user .

Sa baylo, ang log_file nga sugo nagadugang sa daan nga mga file kay sa pagputol niini, alang sa kasayon ​​nga makahimo sa pag-log off ug sa daghang mga higayon sa usa ka sesyon. Aron pagputol sa mga file, gamita ang -nappend flag.

Ang bandila sa -info nagpahinabo sa log_file aron ibalik ang usa ka paghulagway sa pinakabag-o nga mga argumento nga wala'y info nga gihatag.

log_user-info | 0 | 1
Sa default, ang ipadala / magdahum nga ang pag-dialogo gisulod sa stdout (ug usa ka logfile kon bukas). Ang pag-log sa stdout ma-disabled pinaagi sa command "log_user 0" ug pag-usab sa "log_user 1". Ang pag-log sa logfile wala mausab.

Ang bandila sa -info nagpahinabo sa log_user nga ibalik ang usa ka paghulagway sa pinakabag-o nga mga argumento nga wala'y info nga gihatag.

match_max [-d] [-i spawn_id] [gidak-on]
naghubit sa gidak-on sa buffer (sa mga byte) nga gigamit sa sulod pinaagi sa pagdahum . Nga walay sukod nga argumento, ang kasamtangan nga gidak-on ibalik.

Uban sa -d flag, ang default nga gidak-on gitakda. (Ang inisyal nga default mao ang 2000.) Uban sa -i nga bandila, ang gidak-on gitakda alang sa ginganlan og spawn id, kon dili kini giplano alang sa kasamtangan nga proseso .

overlay [- # spawn_id] [- # spawn_id] [...] programa [args]
nag-execute sa "programa args" sa dapit sa kasamtangan nga programa nga gilauman, nga natapos. Ang usa ka haw-ang nga hyphen argument pwersa nga usa ka hyphen sa atubangan sa ngalan sa command ingon nga kini usa ka shell shell. Ang tanan nga mga spawn_ids gisirado gawas sa mga ginganlan nga argumento. Gihimo kini nga mga mapa nga ginganlan og mga file identifiers.

Ang Spawn_ids gipareha aron makahimo og mga tigpakilala alang sa bag-ong programa nga mapanunod. Pananglitan, ang mosunod nga linya nagdagan sa chess ug gitugotan kini nga kontrolado sa kasamtangan nga proseso - ingon, usa ka master nga chess.

overlay -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id chess

Kini mas epektibo kay sa "interact -u", bisan pa niana, kini nagsakripisyo sa abilidad sa paghimo sa inter-interaction sukad nga ang proseso sa Expect dili na kontrolado.

Timan-i nga walay kontrol nga terminal ang gihatag. Busa, kon imong idiskun o ibalik ang standard input, ang mga programa nga makontrol sa trabaho (mga kabhang, pag-login, ug uban pa) dili molihok sa husto.

parity [-d] [-i spawn_id] [bili]
nagpatin-aw kon ang parity kinahanglan mahuptan o kuhaon gikan sa output sa mga proseso nga gisagop. Kung ang bili mao ang zero, ang parity gikuha, kung dili kini wala gihubo. Nga walay hinungdan nga argumento, ang kasamtangan nga bili ibalik.

Uban sa -d flag, ang default nga parity value gibutang. (Ang una nga default mao ang 1, ie, ang parity dili gihubo.) Uban sa -i flag, ang parity value gitakda alang sa ginganlan og spawn id, kon dili kini giplano alang sa kasamtangan nga proseso .

remove_nulls [-d] [-i spawn_id] [bili]
naghubit kon ang mga null null nga gihuptan o gikuha gikan sa output sa gisangputan nga mga proseso sa wala pa ang pagparis o pag- imbento sa variable nga expect_out o interact_out . Kung ang bili mao ang 1, ang nulls makuha. Kung ang bili mao ang 0, ang nulls dili makuha. Nga walay hinungdan nga argumento, ang kasamtangan nga bili ibalik.

Uban sa -d flag, ang default nga bili gitakda. (Ang inisyal nga default mao ang 1, ie, nulls ang gikuha.) Uban sa -i flag, ang bili gitakda alang sa ginganlan og spawn id, kung dili kini giplano alang sa kasamtangan nga proseso .

Kung gikuha o kuhaon ang null null, ang paglaum magrekord sa null bytes ngadto sa log ug stdout.

ipadala ang mga string nga [-flags]
Nagpadala sa hilo sa kasamtangan nga proseso . Pananglitan, ang sugo

ipadala "hello world \ r"

nagpadala sa mga karakter, impyerno sa karon nga proseso . (Tcl naglakip sa usa ka printf- sama nga sugo (gitawag format ) nga makahimo sa pagtukod arbitrary complex mga kuldas.)

Ang mga karakter gipadala gilayon bisan pa ang mga programa nga may linya nga buffered input dili magbasa sa mga karakter hangtud nga ipadala ang usa ka return character. Ang usa ka pagbalik nga karakter gikutlo nga "\ r".

Ang - bandila nagpugos sa sunod nga argumento nga gihubad nga usa ka lambay inay usa ka bandila. Ang bisan unsa nga hilisgutan mahimong mag-una sa "-" bisan kon kini tinuod nga usa ka bandila. Kini naghatag og usa ka kasaligang mekanismo aron sa pagsulti sa mga hugpong nga mga hugpong nga dili maagwanta sa mga wala tuyoa nga mga bandila. (Ang tanan nga mga hugpong nagsugod sa "-" gitagana alang sa umaabut nga mga kapilian.)

Ang -i flag nagpahayag nga ang hilo ipadala sa ginganlan nga spawn_id. Kung ang spawn_id mao ang user_spawn_id , ug ang terminal anaa sa hilaw nga paagi, ang mga bag-ong linya sa hugpong gihubad sa pagbalik-bag-ong mga han-ay sa mga linya aron kini makita ingon nga ang terminal anaa sa luto nga paagi. Gipugngan sa bandila nga-ang mga kini nga hubad.

Ang -null flag nagpadala null nga mga karakter (0 bytes). Sa kasagaran, usa ka null ang gipadala. Mahimong mosunod ang usa ka integer sa -null aron mahibal -an kung pila ang wala ipadala.

Ang -break nga bandila nagpatunghag kondisyon sa paglapas. Kini makatarunganon kung ang spawn id nagpasabot sa usa ka tty device nga gibuksan pinaagi sa "spawn -open". Kon nakahimo ka og usa ka proseso sama sa tip, kinahanglang gamiton nimo ang kombensyon sa tip aron makagawas.

Ang pwersa sa bandila nga pwersa ipadala nga "hinay-hinay", sa ingon maglikay sa komon nga sitwasyon diin ang usa ka computer outtype ang usa ka input buffer nga gidisenyo alang sa usa ka tawo kinsa dili gayud mahibal-an sa samang buffer . Kini nga output gikontrolar sa bili sa variable nga "send_slow" nga nagkinahanglan og duha ka lista sa elemento. Ang unang elemento mao ang usa ka integer nga naghulagway sa gidaghanon sa bytes nga ipadala sa atomically. Ang ikaduha nga elemento usa ka tinuod nga numero nga naghulagway sa gidaghanon sa mga segundo diin ang mga gipadala sa atomic kinahanglan mabulag. Pananglitan, "ipadala send_slow {10 .001}" mopugos "ipadala -s" aron ipadala ang mga linya nga adunay 1 milisecond sa tunga sa matag 10 ka karakter nga gipadala.

Ang -h flag pwersa nga output ipadala (medyo) sama sa usa ka tawo nga aktwal nga mag-type. Ang mga paglihok nga sama sa tawo makita tali sa mga karakter. (Ang algorithm gibase sa pag-apud-apod sa Weibull, uban ang mga pag-usab nga nahiangay niining partikular nga aplikasyon.) Kini nga output gikontrolar sa bili sa variable nga "send_human" nga nagkinahanglan sa lima ka lista sa elemento. Ang unang duha ka mga elemento mao ang kasagaran nga interarrival nga panahon sa mga karakter sulod sa mga segundo. Ang una gamiton nga default. Ang ikaduha gigamit sa pagtapos sa pulong, aron mahibal-an ang mga malingaw nga mga paghunong nga usahay mahitabo sa maong mga pagbag-o. Ang ikatulo nga sumbanan mao ang usa ka sukod sa pagbag-o diin ang .1 mao ang bug-os nga variable, 1 nga makataronganon nga kausaban, ug ang 10 nga na nga invariable. Ang sobra mao ang 0 nga walay katapusan. Ang katapusan nga duha ka mga parameter mao ang, matag usa, usa ka minimum ug maximum interarrival nga oras. Ang minimum ug maximum nga gigamit sa katapusan ug "clip" sa katapusang panahon. Ang kinatibuk-an nga average mahimong lahi gikan sa gihatag nga average kung ang minimum ug maximum nga clip igo nga mga bili.

Ingon nga pananglitan, ang mosunod nga sugo nagsilbing usa ka kusog ug makanunayon nga balayan:

ipadala send_human {.1 .3 1 .05 2} magpadala -h "Ako gigutom, maghimo kita'g paniudto."

samtang ang mosunod mahimong mas angay human sa hangover:

set_human {.4 .4 .2 .5 100} magpadala -h "Goodd party lash night!"

Timan-i nga ang mga sayop dili simulate, bisan pa makahimo ka og sayop nga pagtul-id sa mga sitwasyon sa imong kaugalingon pinaagi sa pag-embite sa mga sayop ug pagtul-id sa usa ka pagpadala nga argumento.

Ang mga bandila sa pagpadala sa null nga mga karakter, alang sa pagpadalag mga pahulay, tungod sa pagpugos sa hinay nga output ug alang sa mga estilo sa pagpa-us aka mga ekslusyon. Ang usa lamang nga gitakda nga katapusan ang gamiton. Dugang pa, walay mga hilisgutan sa hilo nga mahimong matino pinaagi sa mga bandila tungod sa pagpadala sa null nga mga karakter o mga break.

Maayo nga ideya nga mag-una sa una nga ipadala ngadto sa proseso pinaagi sa usa nga gipaabut . awhag maghulat nga ang proseso magsugod, samtang ang dili mahimo. Sa partikular, kon ang unang ipadala makompleto sa dili pa magsugod ang proseso , imong mapahigayon ang risgo nga wala nimo panumbalinga ang imong datos. Sa mga sitwasyon diin ang mga interactive nga programa wala maghatud og inisyal nga aghat, mahimo ka mag-una sa pagpadala sa usa ka paglangan sama sa:

# Aron malikayan ang paghatag sa mga pahibalo unsaon sa paghunong, # kini nga sistema wala mag-aghat alang sa usa ka eksternal nga password. # Paghulat sa 5 segundos alang sa exec aron makompleto ang spawn telnet very.secure.gov pagkatulog 5 ipadala ang password \ r

Ang exp_send usa ka alias alang sa pagpadala. Kung ikaw naggamit sa Expectk o sa uban pang lain-lain sa Gilahan sa Tk nga palibot, ipadala ang gihubad sa Tk alang sa usa ka lahi nga katuyoan. Ang exp_send gitagana alang sa pagkompetensya tali sa mga kalikopan. Ang susamang mga alyado gihatag alang sa uban pang mga gipaabot nga ipadala nga mga sugo.

send_error [-flags] string
sama sa gipadala , gawas nga ang output gipadala ngadto sa stderr kay sa karon nga proseso .

send_log [-] hilo
sama sa gipadala , gawas nga ang hugpong ipadala lamang sa log file (tan-awa ang log_file .) Ang mga argumento wala panumbalinga kon walay log file nga bukas.

send_tty [-flags] string
sama sa gipadala , gawas nga ang output gipadala sa / dev / tty kay sa karon nga proseso .

send_user [-flags] string
sama sa gipadala , gawas nga ang output gipadala ngadto sa stdout kay sa karon nga proseso .

pagkatulog nga mga segundo
hinungdan sa pagkatulog sa script alang sa gihatag nga gidaghanon sa mga segundo. Ang mga segundo mahimo nga usa ka numero sa decimal. Ang mga interrupts (ug mga panghitabo sa Tk kung gigamit nimo ang Expectk) giproseso samtang ang Expect natulog.

nag-spawn [args] program [args]
nagmugna og bag-ong proseso nga nagdagan "program args". Ang stdin, stdout ug stderr niini konektado sa Paglaum, aron kini mabasa ug masulat sa uban nga mga sugo sa Paglaum . Ang koneksyon gibungkag sa duol o kung ang proseso mismo magsira sa bisan asa sa mga tigpaila file.

Sa diha nga ang usa ka proseso gisugdan pinaagi sa spawn , ang variable spawn_id gibutang sa usa ka descriptor nga nagtumong sa maong proseso . Ang proseso nga gihulagway sa spawn_id giisip nga "kasamtangan nga proseso ". Ang spawn_id mahimo nga basahon o isulat, sa pagkatinuod naghatag og kontrol sa trabaho.

Ang user_spawn_id usa ka variable sa kalibutan nga adunay usa ka descriptor nga nagtumong sa user. Pananglitan, kung ang spawn_id gipahimutang niini nga bili, magdahum nga ang mga behikulo sama sa expect_user .

.Kini ang error_spawn_id usa ka tibuok nga kalibutan nga adunay sulod nga descriptor nga nagtumong sa standard error. Pananglitan, kung ang spawn_id gipahimutang niini nga bili, ipadala ang behaves sama sa send_error .

Ang tty_spawn_id usa ka tibuok kalibutan nga baryohanon nga adunay usa ka descriptor nga nagtumong sa / dev / tty. Kon wala ang / dev / tty (sama sa cron, at, o batch script), nan ang tty_spawn_id wala mahubad. Kini mahimong sulayan isip:

Kung ang {[info vars tty_spawn_id]} {# / dev / tty exist} else {# / dev / tty wala sa # tingali sa cron, batch, o sa script}

magbalik ang UNIX process id. Kung walay proseso nga gisulat, 0 gibalik. Ang variable nga spawn_out (ulipon, ngalan) gipahimutang sa ngalan sa pty slave device.

Sa kasagaran, ang spawn nagpalanog sa command name ug mga argumento. Ang bandila sa -noecho mohunong sa pagsugod sa pagbuhat niini.

Ang -console nga flag hinungdan sa console output nga ibalhin ngadto sa proseso nga gisugyot . Kini wala gisuportahan sa tanan nga mga sistema.

Sa sulod, naggamit ang usa ka pty, nagsugod sa samang paagi sa tty sa tiggamit. Kini dugang gisugdan aron ang tanan nga mga kahimanan mao ang "tama" (sumala sa stty (1)). Kon ang variable nga stty_init gihubit, gihubad kini sa estilo sa mga estratehikong argumento ingon nga dugang nga pagsumpayan. Pananglitan, ang "set stty_init raw" maoy hinungdan sa dugang nga mga terminal sa proseso nga magsugod sa hilaw nga paagi. -nottycopy milusad sa sinugdanan nga gibase sa tty sa tiggamit. -nottyinit milabay sa "sane" pagsugod.

Kasagaran, ang pila ka gamay nga panahon nga gikinahanglan aron ipatuman. Kung nakamatikod ka nga nagdala sa usa ka dakung kantidad nga panahon, kini tingali ang kasinatian nga mga panit. Pila ka mga pagsulay ang gipadagan sa mga piskal aron malikayan ang mga pagbag-o sa mga proseso nga dili maayo. (Kini nagkinahanglan og 10 segundos kada napunta nga pty.) Ang Running Expect uban ang -d nga kapilian magpakita kung ang Expect nahibaw-an sa daghang mga piko sa odd states. Kon dili ka makapatay sa mga proseso diin kini nga mga porma gilakip, ang imong bugtong nga kapilian mahimo nga pag-reboot.

Kung ang programa dili mahimo nga malampuson tungod kay ang exec (2) mapakyas (pananglitan kung wala ang programa ), ang usa ka mensahe sa sayup ibalik sa sunod nga pakigsabot o magdahum nga ang sugo ingon nga ang programa nagpadagan ug nagpatungha sa sayup nga mensahe isip output. Kini nga kinaiya usa ka natural nga sangputanan sa pagpatuman sa spawn . Sa kinatibuk-an, ang mga tinidor sa itlog, nga human niini ang proseso nga gisulat walay paagi sa pagpakigsulti sa orihinal nga proseso sa Pagpaabut gawas pinaagi sa komunikasyon pinaagi sa spawn_id.

Ang -open nga flag nagpahinabo sa sunod nga argumento nga gihubad nga Tcl file identifier (ie, gibalik sa bukas .) Ang spawn id mahimo nga gamiton ingon nga kini usa ka proseso nga gisulat. (Ang file identifier kinahanglan dili na gamiton.) Kini makapahimo kanimo sa pagtratar sa mga hilaw nga mga himan, mga file, ug mga linya sa tubo ingon nga mga proseso nga wala magamit ang usa ka pty. 0 gibalik aron ipasabut nga wala'y kalambigit nga proseso . Sa diha nga ang koneksyon sa nagsugod nga proseso gisirado, mao usab ang Tcl file identifier. Ang bandila sa -leaveopen susama sa -buksan gawas nga ang -leaveopen hinungdan nga ang file identifier nga gibiyaan nga bukas bisan pa human ang spawn id gisirado.

Ang -pty flag nagpahinabo sa usa ka pty nga maablihan apan wala'y proseso nga gisugdan. 0 gibalik aron ipasabut nga wala'y kalambigit nga proseso . Ang Spawn_id gitakda sama sa naandan.

Ang variable nga spawn_out (ulipon, fd) gipahimutang sa usa ka file identifier nga katumbas sa pty ulipon. Mahimo kini sirado gamit ang "close -slave".

Ang bandila nga -ignore nagngalan sa usa ka signal nga dili ibalewala sa proseso nga gisugdan. Kay kon dili, ang mga sinyales makuha ang batasan nga kinaiya. Ang mga signal ginganlan ingon nga anaa sa bitbit nga sugo, gawas nga ang matag signal nagkinahanglan og usa ka linain nga bandila.

pagsinabtanay
hinungdan sa mosunod nga mga pamahayag nga i-imprinta sa dili pa ipatuman. (Ang Tcl's trace nga command nagsubay sa mga variable.) Nga lebel nagpakita kung unsa ka layo sa pagtawag sa stack sa pagsubay. Pananglitan, ang mosunod nga sugo nagpaabot sa Paglaum samtang gisubay ang una nga 4 nga mga lebel sa mga tawag, apan walay usa nga ubos niana.

nagpaabot -c "strace 4" script.exp

Ang bandila sa -info nagpahinabo sa strace nga ibalik ang usa ka paghulagway sa pinakabag-o nga mga argumento nga wala'y info nga gihatag.

stty args
nag-usab sa terminal nga mga paagi nga sama sa external nga command.

Sa default, ang kontrolado nga terminal ma-access. Ang ubang mga terminal mahimong ma-access pinaagi sa pag-apil sa "Mga hangyo alang sa status nga ibalik kini ingon nga resulta sa sugo. Kung walay status nga gihangyo ug ang kontrolado nga terminal ma-access, ang nahauna nga kahimtang sa mga hilaw ug echo nga mga kinaiya ibalik sa usa ka porma nga mahimo unya nga gigamit sa sugo.

Pananglitan, ang mga argumento nga hilaw o kuno ang gibutang sa terminal sa hilaw nga paagi. Ang mga argumento nga gilat-an o gisudlan gibutang sa terminal sa luto nga paagi. Ang mga argumento nga echo ug -echo gibutang ang terminal sa echo ug noecho mode matag usa.

Ang mosunod nga pananglitan nagpakita kon unsaon sa temporaryo nga pagpugong sa pagpalanog. Mahimo kining gamiton sa kung dili-awtomatik nga mga script aron malikayan ang pagbutang sa mga password diha niini. (Tan-awa ang dugang nga paghisgot niini sa ubos sa PAGHINGPIT NGA MGA SALA sa ubos.)

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

sistema args
naghatag sa args sa sh (1) isip input, sama nga kini gisulat ingon nga usa ka sugo gikan sa usa ka terminal. Nagpaabut nga maghulat hangtud matapos ang kahon. Ang status sa pagbalik gikan sa sh ang pagdumala sa sama nga paagi nga ang administrador nagdumala sa iyang status balik.

Sukwahi sa exec nga nagpa-redirects sa stdin ug stdout sa script, ang sistema wala'y redirection (gawas nga gipakita sa higot mismo). Busa, posible nga gamiton ang mga programa nga kinahanglan nga maghisgot direkta sa / dev / tty. Sa samang hinungdan, ang mga resulta sa sistema wala ma-record sa log.

timestamp [args]
nagbalik sa usa ka timestamp. Nga walay mga argumento, ang gidaghanon sa mga segundo sukad ang panahon gibalik.

Ang bandila sa -format nagpaila sa usa ka hugpong nga gibalik apan sa mga kapuli nga gihimo sumala sa POSIX nga mga lagda alang sa strftime. Pananglitan% usa gipulihan sa usa ka pinamubo nga ngalan sa adlaw sa semana (ie, Sab). Ang uban mao ang:

% usa ka abbreviated nga pangalan sa adlaw sa semana% Usa ka tibuok nga adlaw sa semanang ngalan% b dinaghan nga ngalan sa bulan% B tibuok bulan nga ngalan% c petsa-panahon sama sa: Wed Oct 6 11:45:56 1993% d adlaw sa bulan (01-31% H oras (00-23)% I oras (01-12)% j adlaw (001-366)% m bulan (01-12)% M minuto (00-59)% p am o pm% S ikaduha (00-61) % u adlaw (1-7, Lunes mao ang unang adlaw sa semana)% U ka semana (00-53, una nga Domingo mao ang unang adlaw sa semana usa)% V semana (01-53, estilo sa ISO 8601)% w adlaw (0- 6)% W semana (00-53, unang Lunes mao ang una nga adlaw sa semana usa)% x petsa-oras sama sa: Wed Oct 6 1993% X nga oras sa: 23:59:59% y tuig (00-99) % Y tuig maingon sa: 1993% Z timezone (o walay bisan unsa kon dili determinable) %% usa ka hubo nga porsyento nga ilhanan

Ang ubang mga espesipikasyon sa% nga wala mahilakip. Ang ubang mga karakter ipasa sa dili matandog. Ang C locale lamang ang gisuportahan.

Ang gipadad-an nga flag nagpaila sa usa ka gidaghanon sa mga segundo sukad ang panahon nga gigamit ingon nga usa ka tinubdan nga gikan sa pag-format. Kay kon dili, ang kasamtangan nga panahon gigamit.

Ang bandila- gmt pwersa nga timestamp output aron gamiton ang GMT timezone. Nga walay bandila, gigamit ang lokal nga timezone.

lit-ag [[sugo] signal]
naghimo sa sugo nga ipatuman sa umaabot nga pagdawat sa bisan unsang mga signal. Ang sugo gipatuman sa global nga bahin. Kon wala ang sugo , ang hitabo sa signal ibalik. Kon ang sugo mao ang hugpong nga SIG_IGN, ang mga signal wala panumbalinga. Kung ang command mao ang string SIG_DFL, ang mga signal resulta sa default sa sistema. Ang signal usa ka signal o usa ka lista sa signal. Ang mga signal mahimo nga matino sa gidaghanon o sa simbolo sama sa signal (3). Ang prefix nga "SIG" mahimo nga wala maapil.

Wala'y mga argumento (o ang argumento -number), ang bitag mibalik sa numero sa signal sa trap command nga gipatuman karon.

Ang -code flag naggamit sa pagbalik sa code sa command puli sa bisan unsa nga kodigo nga Tcl nga hapit na mobalik sa diha nga ang sugo sa sinugdanan nagsugod sa pagdagan.

Ang flag nga -interp hinungdan sa sugo nga pag-usisa gamit ang interpreter nga aktibo sa panahon nga ang sugo nagsugod sa pagdagan kay sa diha nga ang lit-ag gideklarar.

Ang flag nga-ngalan ang hinungdan sa bitbit nga utlanan aron ibalik ang signal nga ngalan sa trap command nga karon gipatuman.

Ang -max nga bandila maoy hinungdan sa command trap aron ibalik ang kinadak-ang numero sa signal nga mahimong ibutang.

Pananglitan, ang sugo nga "bitik (send_user" Ouch! "} SIGINT" mag-print "Ouch!" sa matag higayon nga ang user mogamit ^ C.

Sa kasagaran, ang SIGINT (nga kasagaran mahimo nga gigama pinaagi sa pagputol ^ C) ug SIGTERM maoy hinungdan nga mogawas. Kini tungod sa mosunod nga lit-ag, nga gibuhat pinaagi sa default kung ang Expect magsugod.

trap nga exit {SIGINT SIGTERM}

Kung gigamit nimo ang -D flag aron masugdan ang debugger, ang SIGINT gibag-o aron masugdan ang interactive debugger. Kini tungod sa mosunod nga lit-ag:

bitamina {exp_debug 1} SIGINT

Ang lit-ag sa debugger mahimong mausab pinaagi sa pagpahimutang sa variable nga EXPECT_DEBUG_INIT sa kinaiyahan ngadto sa usa ka bag-ong trap command.

Siyempre, mahimo nimo kining isalikway pinaagi lamang sa pagdugang sa mga lit-ag sa imong script. Sa partikular, kung ikaw adunay kaugalingon nga "lit-ag nga gikan sa SIGINT", kini makalusot sa lit-ag sa debugger. Kini mapuslanon kung gusto nimo mapugngan ang mga tiggamit sa pagkuha sa debugger sa tanan.

Kung gusto nimo ipasabot ang imong kaugalingon nga bitik sa SIGINT apan paingon sa debugger kung kini nagdagan, gamita ang:

kung {! [exp_debug]} {kalit ang akong panit SIGINT}

Sa laing bahin, mahimo ka makapanglantaw sa debugger gamit ang ubang signal.

ang lit-ag dili magpasabot kanimo sa paglihok sa aksyon alang sa SIGALRM tungod kay kini gigamit nga internally sa Expect . Ang gitangtang nga sugo nagtakda sa SIGALRM ngadto sa SIG_IGN (wala'y pagtagad). Mahimo nimong ma-reenable kini basta dili nimo kini himoon sa sunod nga mga command spawn.

Tan-awa ang signal (3) alang sa dugang impormasyon.

maghulat [args]
Ang mga pagka-antus hangtud nga ang usa ka proseso nga gisulat (o ang kasamtangan nga proseso kon walay usa nga ginganlan) natapos.

paghulat nga kasagaran mobalik ang lista sa upat ka mga integer. Ang una nga integer mao ang pid sa proseso nga gipaabut. Ang ikaduha nga integer mao ang katumbas nga spawn id. Ang ikatulo nga integer mao -1 kon nahitabo ang usa ka operating system error, o 0 kon dili. Kon ang ikatlo nga integer maoy 0, ang ika-upat nga integer mao ang status nga gibalik sa proseso nga gisulat. Kon ang ikatulo nga integer -1, ang ikaupat nga integer mao ang bili sa errno nga gitakda sa operating system. Gitakda usab ang global variable errorCode.

Dugang nga elemento mahimong makita sa katapusan sa bili sa pagbalik gikan sa paghulat . Usa ka opsyonal nga ikalimang elemento ang nagpaila sa usa ka klase sa impormasyon. Sa pagkakaron, ang bugtong posible nga bili alang niini nga elemento mao ang CHILDFILLED kung diin ang sunod nga duha ka mga bili mao ang C-style nga ngalan sa signal ug usa ka mubo nga paghulagway sa teksto.

Ang -i flag nagpahayag sa proseso nga maghulat nga katugbang sa ginganlan nga spawn_id (DILI ang proseso id). Diha sa usa ka handler sa SIGCHLD, posible nga maghulat alang sa bisan unsa nga proseso nga gisugdan pinaagi sa paggamit sa spawn id -1.

Ang -nowait flag nga hinungdan sa paghulat sa pagbalik gilayon uban sa timailhan sa usa ka malampuson maghulat. Sa diha nga ang proseso mogawas (sa ulahi), kini awtomatik nga mawala nga walay panginahanglan alang sa usa ka hayag nga paghulat.

Ang paghulat nga sugo mahimo usab nga gamiton paghulat alang sa usa ka proseso nga nanga- on gamit ang mga argumento "-i -1". Dili sama sa paggamit niini sa mga gisangputan nga proseso, kini nga sugo mahimong ipatuman sa bisan unsang panahon. Walay pagkontrol sa proseso nga giani. Apan, ang bili sa pagbalik mahimong masusi alang sa proseso nga id.

MGA LIBRARYA

Ang gilauman nga awtomatik nahibal-an mahitungod sa duha ka mga built-in nga mga librarya para sa Mga gila sa mga script. Gihubit kini sa mga direktoryo nga ginganlan sa mga kapilian exp_library ug exp_exec_library. Ang duha gituyo aron maglangkob sa mga file sa utility nga mahimong magamit sa ubang mga script.

Ang exp_library naglangkob sa mga file nga dili independente sa arkitektura. Ang exp_exec_library naglangkob sa mga file nga nagsalig sa arkitektura. Depende sa imong sistema, ang duha ka mga direktoryo mahimong hingpit nga walay sulod. Ang paglungtad sa file nga $ exp_exec_library / cat-buffers naghulagway kung ang imo / bin / cat buffers sa default.

PAG-PRINT

Ang usa ka kahulogan sa vgrind mahimong mabatonan alang sa pretty-printing nga mga gilauman nga mga script. Sa pag-ingon nga ang kahulugan sa vgrind nga gitagana uban sa pag-apud-apod sa Paglaum sa husto nga pag-instalar, mahimo nimo kini gamiton ingon nga:

vgrind -lexpect file

MGA Ehemplo

Daghan ang dili makita kon unsaon paghimo ang tanang butang nga gihubit nga gihulagway sa tawo nga panid. Gidasig ko ikaw sa pagbasa ug pagsulay sa mga pananglitan sa pananglitan nga direktoryo sa pag-apud-apod sa Expect . Ang uban kanila tinuod nga mga programa. Ang uban naghulagway lamang sa piho nga mga teknik, ug siyempre, ang usa ka magtiayon dali lang nga mga binayran. Ang INSTALL nga file adunay dali nga pagsabot sa mga programa.

Ang mga gipaabot nga mga papeles (tan-awa ang TAN-AWA ALSO) mapuslanon usab. Samtang ang pipila ka mga papel naggamit sa syntax nga katumbas sa naunang mga bersyon sa Expect, ang kaubang rationales mao gihapon ang balido ug mas daghan pa nga detalye kaysa niining panid nga tawo.

CAVEATS

Ang mga extension mahimo magkabangi sa mga ngalan sa mga Expect sa mga ngalan. Pananglitan, ang gipadala gitakda sa Tk alang sa usa ka lahi nga katuyoan. Tungod niini nga rason, ang kadaghanan sa mga sugo sa Pagpaabot mahimo usab nga "exp_XXXX". Ang mga commands ug variables nga nagsugod sa "exp", "inter", "spawn", ug "timeout" walay mga alias. Gamita ang gipadako nga mga ngalan sa komand kung gikinahanglan nimo kini nga pagkomparar sa mga palibot.

Ang paglaum nagkinahanglan sa usa ka liberal nga panglantaw sa pag-scoping. Sa partikular, ang mga baryable nga gibasa sa mga gimando nga mga sugo nga gipaabot sa programa sa Pagpaabut ang una nga gipangita gikan sa lokal nga nasakupan, ug kung dili makita, sa tibuok kalibutan nga kasangkaran. Pananglitan, kini ang hinungdan sa panginahanglan nga ibutang ang "global timeout" sa matag pamaagi nga imong gisulat nga naggamit sa paglaum . Sa laing bahin, ang mga variable nga gisulat kanunay anaa sa lokal nga kasangkaran (gawas kon ang usa ka "global" nga sugo nga gi-isyu). Ang labing kasagaran nga suliran nga maoy hinungdan niini mao ang pagpaniid sa usa ka pamaagi. Sa gawas sa pamaagi, ang spawn_id wala na, mao nga ang proseso nga gisulat dili na ma-access tungod lamang sa pag-scoping. Idugang ang usa ka "global spawn_id" sa maong paagi.

Kung dili nimo mahimo ang kapasidad sa multispawning (ie, ang imong sistema dili nagsuporta sa dili pagpili (BSD *. *), Poll (SVR> 2), ni usa ka butang nga katumbas), Ang gilauman makontrol lamang ang usa ka proseso sa usa ka higayon. Sa kini nga kaso, dili mosulay sa pag-set spawn_id , ni kinahanglan nga ipatuman ang mga proseso pinaagi sa exec samtang ang usa ka proseso sa spawned nagpadayon . Dugang pa, dili ka makapaabot gikan sa daghang mga proseso (lakip na ang user isip usa) sa samang higayon.

Ang mga parametro sa terminal adunay dako nga epekto sa mga script. Pananglitan, kon ang usa ka script gisulat aron sa pagpangita sa pag-echo, kini makadaut kon ang pagpalanog gipalong. Tungod niini nga rason, Nagpaabut nga mga pwersa nga mga parameter sa terminal sa default. Ikasubo, kini makahimo sa mga butang nga dili maayo alang sa ubang mga programa. Ingon nga pananglitan, ang emacs shell gusto mag-usab sa "naandan nga" mappings: ang mga bag-ong linya sa linya mapalitan sa mga bag-ong linya sa linya imbis nga bag-ong linya sa linya sa mga carriage, ug ang pag-usab sa pag-usab-usab. Kini nagtugot sa usa nga gamiton ang mga emac sa pag-edit sa input line. Ikasubo, ang Paglaum dili makatag-an niini.

Mahimo kang mohangyo nga ang Pagpaabot dili pagpa-override sa default nga setting sa mga terminal nga terminal, apan kinahanglan nga mag-amping ka kaayo sa pagsulat sa mga script para sa ingon nga mga palibut. Sa kaso sa emacs, likayi ang depende sa mga butang nga sama sa pag-echo ug mga end-of-line mappings.

Ang mga sugo nga midawat sa mga argumento nga gisal-ot ngadto sa usa ka listahan (ang gipaabot nga mga variant ug interact ) naggamit sa usa ka heuristic sa paghukom kung ang listahan usa gayud nga argumento o daghan. Ang heuristic mahimong mapakyas lamang sa kaso kung ang lista tinuod nga nagrepresentar sa usa ka argumento nga adunay daghang mga nematipikado \ n uban sa dili mga whitespace nga mga karakter tali kanila. Kini daw dili mahimo, apan ang argumento nga "-nobrace" mahimong gamiton sa pagpugos sa usa ka argumento nga pagdumala isip usa ka argumento. Mahimo kining gamiton sa pag-agi sa makina nga gilauman nga makina. Sa susama, ang pwersa nga pwersa nagpugos sa usa ka argumento nga pagadumala sama sa daghang mga sumbanan / aksyon.

BUGS

Tinuod gyud nga matawag nga programa ang "sex" (alang sa "Smart EXEC" o "Send-EXPECT"), apan maayo nga pagbati (o tingali Puritanismo) ang nagpatigbabaw.

Diha sa pipila ka mga sistema, sa diha nga ang usa ka kabhang gibutang, kini nagreklamo mahitungod sa dili makahimo sa pag-access sa tty apan midagan gihapon. Kini nagpasabot nga ang imong sistema adunay usa ka mekanismo alang sa pagkontrol sa tty nga wala mahibaloi sa pagdahom . Palihug pangitaa kung unsa kini, ug ipadala kini nga impormasyon balik kanako.

Ang Ultrix 4.1 (labing menos ang pinakabag-ong mga bersyon sa palibot dinhi) nag-isip nga ang timeouts nga labaw sa 1000000 mahimong katumbas sa 0.

Ang Digital UNIX 4.0A (ug tingali ang uban nga mga bersyon) nagdumili sa paggahin sa ptys kon ikaw nagpaila sa usa ka SIGCHLD nga handler. Tan-awa ang grant page alang sa dugang info.

Ang IRIX 6.0 wala mogamit sa tukmang permiso sa pty aron nga kung ang Expect misulay sa paggahin sa usa ka pty nga kaniadto gigamit sa laing tawo, napakyas kini. Pag-upgrade sa IRIX 6.1.

Ang Telnet (gipamatud-an lamang ubos sa SunOS 4.1.2) nagabitay kon ang TERM wala mahatag. Kini usa ka problema ubos sa cron, sa ug sa cgi scripts, nga wala maghatag TERM. Busa, kinahanglang ipahimutang kini sa tin-aw nga paagi - sa unsa nga matang ang kasagaran nga walay kalabutan. Kinahanglan nga kini ibutang sa usa ka butang! Ang mosunod tingali igo na alang sa kadaghanan nga mga kaso.

pagbutang sa env (TERM) vt100

Tip (gipamatud-an nga ilalom lamang sa BSDI BSD / OS 3.1 i386) nagbitay kon wala ang SHELL ug HOME. Kini usa ka problema ubos sa cron , sa ug sa cgi scripts, nga wala maghatag og kahulugan niining mga kalainan sa palibot. Busa, kinahanglang ipahayag mo kini sa tin-aw - sa unsa nga matang ang sagad nga wala'y kalabutan. Kinahanglan nga kini ibutang sa usa ka butang! Ang mosunod tingali igo na alang sa kadaghanan nga mga kaso.

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

Ang pipila ka mga implementasyon sa ptys gidesinyo aron ang kernel molabay sa bisan unsang wala mabasa nga output human sa 10 ngadto sa 15 segundos (aktwal nga gidaghanon ang pagpatuman-pagpatuman) human matapos ang proseso sa file descriptor. Busa Nagpaabot sa mga programa sama sa

ang mga spawn date natulog 20 nagpaabut

mapakyas. Aron malikayan kini, tawga ang mga dili inter-aktibo nga mga programa nga adunay exec kay sa itanum . Samtang kini nga mga sitwasyon mahimong mahunahuna, sa praktis wala pa ako makasugat og usa ka sitwasyon diin ang katapusan nga resulta sa usa ka tinuod nga interactive nga programa mawala tungod sa kini nga kinaiya.

Sa pihak nga bahin, ang Cray UNICOS ptys nagadula sang bisan ano nga wala mabasa nga output gilayon pagkatapos nga ang proseso nagsirado sa file descriptor. Akong gitaho kini ngadto kang Cray ug nagtrabaho sila sa usa ka ayuhon.

Usahay ang usa ka paglangan gikinahanglan tali sa usa ka aghat ug usa ka tubag, sama sa kung ang usa ka interface sa tty nag-usab sa mga setting sa UART o sa pagpareha sa mga baud rate pinaagi sa pagpangita sa pagsugod / paghunong sa mga tipik. Kasagaran, ang tanan nga gikinahanglan mao ang pagkatulog sa ikaduha o duha. Ang usa ka mas maayo nga pamaagi mao ang pagsulay hangtud nga ang hardware andam sa pagdawat sa input. Ang mosunod nga pananglitan nagagamit sa duha ka pamaagi:

ipadala ang "speed 9600 \ r"; pagkatulog 1 nagdahum {timeout {send "\ r"; exp_continue} $ prompt}

trapo -code dili magtrabaho uban sa bisan unsa nga sugo nga naglingkod sa Tcl's event loop, sama sa pagkatulog. Ang problema mao nga sa loop nga panghitabo, ang Tcl nagtangtang sa mga return code gikan sa mga handler sa async event. Ang usa ka workaround mao ang pagbutang og usa ka bandila sa code sa lit-ag. Dayon susiha dayon ang flag human sa command (ie, tulog).

Ang expect_background nga komand sa wala'y pagtagad -timeout mga argumento ug walay konsepto sa timeouts sa kinatibuk-an.

& # 34; PAGHINGPIT NGA MGA SALA & # 34;

Adunay usa ka magtiayon nga mga butang mahitungod sa Nagpaabut nga mahimong dili mahunahunaon. Kini nga seksyon nagsulay sa pagsulbad sa pipila niini nga mga butang uban sa duha ka mga sugyot.

Ang usa ka komon nga nagpaabut nga suliran mao ang unsaon pag-ila sa mga hulhog sa kabhang Tungod kay kini lainlain ang pagbag-o sa nagkalainlain nga mga tawo ug nagkalainlain nga mga kabhang, mahimong mahimong malisod ang pag-automate sa rlogin nga wala masayud sa aghat. Ang usa ka makatarunganon nga kombensyon mao ang pagbutang sa mga tiggamit sa pagtipig sa usa ka regular nga ekspresyon nga naghulagway sa ilang aghat (labi na, ang katapusan niini) sa environment nga EXPECT_PROMPT nga walay kapuslanan. Ang kod nga sama sa mosunod mahimong gamiton. Kon wala ang EXPECT_PROMPT, ang code adunay maayong kahigayonan nga magtrabaho sa husto.

set prompt "(% | # | \\ $) $"; # default prompt catch {set prompt $ env (EXPECT_PROMPT)} expect -re $ prompt

Ginapalig-on ko ikaw sa pagsulat nga nagapaabot nga mga sumbanan nga naglakip sa katapusan sa bisan unsa nga imong gipaabut nga makita. Kini naglikay sa posibilidad sa pagtubag sa usa ka pangutana sa dili pa makita ang tibuok nga butang. Dugang pa, samtang mahimo nimo nga matubag ang mga pangutana sa dili pa makita kini sa hingpit, kon motubag ka og sayo, ang imong tubag tingali makita sa tunga-tunga sa pangutana. Sa laing pagkasulti, ang resulta nga pakigsultihanay husto apan tan-aw nga gisulayan.

Kadaghanan sa mga pag-aghat naglakip sa usa ka espasyo nga kinaiya sa katapusan. Pananglitan, ang prompt gikan sa ftp mao ang 'f', 't', 'p', '>' ug. Aron makomparar kini nga aghat, kinahanglan nga imong ibutang ang matag usa niini nga mga karakter. Kini usa ka kasagarang sayop nga dili ilakip ang blangko. Ibutang ang blangko sa tin-aw nga paagi.

Kon mogamit ka sa usa ka sumbanan sa pormang X *, ang * motakdo sa tanan nga output nga nadawat gikan sa katapusan sa X ngadto sa katapusan nga butang nga nadawat. Kini ingon nga intuitive apan mahimong makalibog tungod kay ang mga pulong nga "katapusan nga butang nga nadawat" mahimong magkalain-lain depende sa katulin sa computer ug sa pagproseso sa I / O sa duha sa kernel ug driver sa aparato.

Sa partikular, ang mga tawo adunay tendensya nga makita ang output sa programa nga moabut sa dagkong mga tipak (atomically) kung sa pagkatinuod ang kadaghanan nga mga programa makamugna og usa ka linya sa usa ka higayon. Sa paghuna-huna nga mao kini ang kaso, ang * sa sumbanan sa naunang parapo mahimo lamang nga mohaum sa katapusan sa kasamtangan nga linya bisan og daw adunay labaw pa, tungod kay sa panahon sa dula nga ang tanan nga output nga nadawat.

nga wala'y paagi nga mahibal-an nga dugang nga output ang moabut gawas kung ang imong sumbanan espesipikong naghisgot niini.

Bisan ang depende sa buffering nga nakabase sa linya dili maalamon. Dili lamang ang mga programa talagsa rang maghimo og mga saad mahitungod sa matang sa buffering nga ilang gibuhat, apan ang sistema sa pagkawala sa kakuyaw mahimong makabungkag sa mga linya sa output aron ang mga linya madaut sa daw mga dapit nga wala'y pulos. Busa, kon mahimo nimo ipahayag ang katapusang pipila ka mga karakter sa paspas nga panahon sa pagsulat sa mga sumbanan, maalamon ang pagbuhat niini.

Kon ikaw naghulat alang sa usa ka sumbanan sa katapusan nga output sa usa ka programa ug ang programa nagpagawas usa ka butang sa laing hinoon, ikaw dili makamatikod nga sa timeout nga keyword. Ang hinungdan mao nga dili magdugay ang paglaum - sa baylo kini makakuha og indikasyon. Gamita kini. Mas maayo pa, gamiton ang duha. Nianang paagiha kung kana nga linya kanunay mabalhin, dili nimo kinahanglan nga usbon ang linya mismo.

Ang mga bag-ong linya kasagarang nakabig ngadto sa pagbalik sa karwahe, ang mga sunod-sunod nga linya sa binhi sa dihang ang output sa terminal driver. Busa, kung gusto nimo ang usa ka sumbanan nga tin-aw nga nahiangay sa duha ka linya, gikan sa, ingon, printf ("foo \ nbar"), kinahanglan nimo gamiton ang sumbanan nga "foo \ rbar".

Ang susama nga paghubad mahitabo sa dihang magbasa gikan sa user, pinaagi sa expect_user . Sa kini nga kaso, kon ikaw mopadayon sa pagbalik, kini hubaron ngadto sa usa ka bag-ong linya. Kung Kung ang Expect moagi sa usa ka programa nga nagtakda sa iyang terminal sa hilaw nga paagi (sama sa telnet), adunay problema, tungod kay ang programa nagpaabut sa tinuod nga pagbalik. (Ang uban nga mga programa sa pagkatinuod mapinasayloon sa diha nga kini awtomatikong maghubad sa mga bag-o nga linya sa pagbalik, apan kadaghanan wala.) Sa walay palad, walay paagi nga mahibal-an nga ang usa ka programa nagbutang sa terminal niini ngadto sa hilaw nga paagi.

Imbes nga han-ay ang pag-ilis sa bag-ong linya sa linya sa mga pagbalik, ang sulbad mao ang paggamit sa sugo nga "stty raw", nga mohunong sa paghubad. Hinumdumi, hinoon, nga kini nagpasabot nga dili na nimo makuha ang linuto nga linya nga pag-edit nga mga bahin.

makigkomunikar sa bug-os nga pagtakda sa imong terminal sa hilaw nga mode aron kini nga suliran dili motumaw dayon.

Kanunay kini nga mapuslanon sa pagtipig sa mga password (o uban pang pribadong impormasyon) diha sa mga gilauman nga mga script. Dili kini girekomendar tungod kay ang bisan unsang butang nga gitipigan sa usa ka computer dali nga ma-access sa bisan kinsa. Busa, ang interaktibong pag-aghat sa mga password gikan sa usa ka script usa ka maalamon nga ideya kay sa paghubad niini sa literal. Bisan pa niana, usahay ang ingon nga pagpasulod mao lamang ang posibilidad.

Ikasubo, ang UNIX file system walay direktang paagi sa pagmugna og mga script nga mahimo nga mahimo apan dili mabasa. Ang mga sistema nga nagsuportar sa mga script sa mga bag-ong panit mahimo nga dili direkta nga makahulagway niini sama sa mosunod:

Himoa ang script nga gilauman (nga naglangkob sa sekreto nga datos) sama sa naandan. Himoa ang iyang mga permiso nga mahimong 750 (-rwxr-x ---) ug gipanag-iya sa usa ka kasaligang grupo, nga usa ka grupo nga gitugotan sa pagbasa niini. Kon gikinahanglan, paghimo og usa ka bag-ong grupo alang niini nga katuyoan. Sunod, paghimo og script sa / bin / sh uban sa mga permiso 2751 (-rwxr-s-x) nga gipanag-iya sa sama nga grupo sama kaniadto.

Ang resulta mao ang usa ka script nga mahimong ipatuman (ug mabasa) ni bisan kinsa. Sa dihang gisangpit, kini nagpadagan sa script sa Expect .

& # 34; TAN-AWA ANG UBAN & # 34;

Tcl (3), libexpect (3)
"Pagtuon sa Paglaum: Usa ka Tcl-Based Toolkit alang sa Automating Interactive Programs" ni Don Libes, pp. 602, ISBN 1-56592-090-2, O'Reilly and Associates, 1995.
"Paglaum: Pag-ayo Niadtong Dili Mapugngan nga mga Tugbang sa Interactivity" ni Don Libes, Mga Proceedings of the Summer 1990 USENIX Conference, Anaheim, California, Hunyo 11-15, 1990.
"Gigamit ang pagdahum sa Pag-automate sa System Administration Tasks" ni Don Libes, Proceedings sa 1990 USENIX Large Installation Systems Administration Conference, Colorado Springs, Colorado, Oktubre 17-19, 1990.
"Tcl: Usa ka Embeddable Command nga Pinulongan" ni John Ousterhout, Proceedings of the Winter 1990 USENIX Conference, Washington, DC, Enero 22-26, 1990. "Ako nagpaabut: Mga Script alang sa Pagpugong sa Interactive nga mga Programa" ni Don Libes, Computing Systems , Vol. 4, No. 2, Press Journal sa Unibersidad sa California, Nobyembre 1991. "Don Libes, Proceedings of the Summer 1992 USENIX Conference, pp. 135-144, San Antonio, TX, Hunyo 12-15, 1992. "Kibitz - Nagkonektar sa Multiple Interactive Programs", ni Don Libes, Software - Practice & Experience, John Wiley & Sons, West Sussex, England, Vol.

23, No. 5, May, 1993..I Usa ka "Debugger for Tcl Applications", ni Don Libes, Proceedings sa 1993 Tcl / Tk Workshop, Berkeley, CA, Hunyo 10-11, 1993.

Taga-AUTHOR

Don Libes, National Institute of Standards and Technology

MGA TUN-ANANG BAHIN

Salamat sa John Ousterhout alang sa Tcl, ug Scott Paisley alang sa inspirasyon. Salamat sa Rob Savoye alang sa Expect's autoconfiguration code.

Ang HISTORY file nag-dokumento sa kadaghanan sa ebolusyon sa paglaum . Naghimo kini og makapaikag nga pagbasa ug makahatag kanimo og dugang nga pagsabut sa niini nga software. Salamat sa mga tawo nga gihisgutan niini nga nagpadala kanako og mga pagbag-o sa kasaypanan ug naghatag sa laing tabang.

Ang disenyo ug pagpatuman sa Expect gibayaran sa bahin sa gobyerno sa US ug busa anaa sa publikong domain. Apan ang tigsulat ug NIST gusto sa credit kon kini nga programa ug dokumentasyon o mga bahin niini gigamit.