Tha an Linux / Unix Command Expect

Tha dùil gum bi prògram a 'bruidhinn ri prògraman eadar-ghnìomhach eile a rèir sgriobt. A 'leantainn an sgriobt, tha dùil aig Expect dè a ghabhas a shùileachadh bho phrògram agus dè an fhreagairt cheart a bu chòir a bhith. Tha cànan eadar-mhìneachaidh a 'toirt meanbh-structair agus structaran smachd aig àrd ìre gus an còmhradh a stiùireadh. A thuilleadh air an sin, faodaidh an neach-cleachdaidh smachd a ghabhail agus eadar-obrachadh dìreach nuair a tha e ag iarraidh, às dèidh sin a 'tilleadh smachd air an sgriobt.

Tha Expectk na mheasgachadh de Expect and Tk. Bidh e a 'giùlan dìreach mar a bhith an dùil agus an toil aig Tk. Faodar dùil a bhith air a chleachdadh gu dìreach ann an C no C + + gun Tcl.

Tha an t-ainm "Expect" a 'tighinn bhon bheachd a bhith a' cur / a 'sùileachadh sreath a tha air am meas le uucp, kermit agus prògraman smachd modem eile. Ach a dh 'aindeoin uucp, tha Expect air a dhèanamh farsaing gus am faod e a bhith air a ruith mar àithne ìre cleachdaidh le prògram sam bith agus obair sam bith. Faodaidh dùil gum bi grunn phrògraman ann aig an aon àm.

Na tha dùil a dh 'fhaodas a dhèanamh

Mar eisimpleir, is e seo cuid de na rudan a dh 'fhaodas an t-òrdugh a bhith an dùil:

Tha grunn adhbharan ann airson nach urrainn don sligean na gnìomhan sin a choileanadh. Tha a h-uile dad comasach le dùil.

San fharsaingeachd, tha dùil gu bheil e feumail airson prògram sam bith a ruith a dh 'fheumas eadar-obrachadh eadar am prògram agus an neach-cleachdaidh. Is e a h-uile rud a tha riatanach gum faod an eadar-obrachadh a bhith air a chomharrachadh gu prògramach. Faodaidh dùil cuideachd smachd a thoirt don neach-cleachdaidh gun stad a chumail air a 'phrògram a tha fo smachd. San aon dòigh, faodaidh an neach-cleachdaidh smachd a thoirt air ais dhan script aig àm sam bith.

Cleachdadh

Tha dùil gun leugh cmdfile airson liosta de dh 'òrduighean a thèid a choileanadh. Thathas an dùil gun tèid iarraidh air a chleachdadh gu h-obann air siostaman a tha a 'toirt taic don #! notation le bhith a 'comharrachadh an sgriobt mar fhreagarrach agus a' dèanamh a 'chiad loidhne anns an sgriobt:

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

Gu dearbh, feumaidh an t-slighe mìneachadh ceart a thoirt air far a bheil dùil ann beatha. / usr / local / bin dìreach eisimpleir.

Tha am bratach -c a 'frithealadh òrdugh a thèid a chuir gu bàs mus tig dad san sgriobt. Bu chòir an àithne a bhith air ainmeachadh airson casg a chur air a bhriseadh suas leis an t-slige. Faodar an roghainn seo a chleachdadh iomadh uair. Faodar ioma-òrdughan a thoirt gu buil le aon -c le bhith gan sgaradh le semicolons. Thèid òrdughan a chur gu bàs san òrdugh a tha iad a 'nochdadh. Nuair a chleachdas tu Expectk, thèid an roghainn seo a chomharrachadh mar -command.

Tha am bratach -d a 'toirt seachad cuid de thoraidhean breithneachail, a tha a' toirt cunntas air a 'chuid as motha de ghnìomhachd a-staigh de dh' òrduighean mar a bhith an dùil agus ag eadar-obrachadh Tha an aon bhuaidh aig a 'bhratach seo ri "exp_internal 1" aig toiseach sgriobt Expect, agus tha an dreach de Expect air a chlò-bhualadh.

Tha an bratach -D a 'comasachadh debugger eadar-obrachail. Bu chòir luach sreathan a leantainn. Gabhaidh an neach-dìona smachd mus tig an ath modh Tcl ma tha an luach neo-neoni no ma tha C air a bhrùthadh no gu bheil briseadh-dùil air a bhualadh, no nochdaidh òrdugh debugger iomchaidh eile sa sgriobt. Nuair a chleachdas tu Expectk, tha an roghainn seo air a shònrachadh mar - Debug.

Bidh am bratach -f a 'fàgail faidhle bho bhith a' leughadh òrdughan. Tha am bratach fhèin roghainneil oir chan eil e feumail ach nuair a tha thu a 'cleachdadh an #! notation, gus am faod argamaidean eile a bhith air an toirt seachad air an loidhne àithne. Nuair a chleachdas tu Expectk, thèid an roghainn seo a shònrachadh mar -file.

Gu bunaiteach, thèid am faidhle òrdugh a leughadh mar chuimhne agus thèid a chur gu bàs gu h-iomlan. Tha e uaireannan deònach faidhlichean a leughadh aon loidhne aig aon àm. Gus feuchainn ri faidhlichean mì-laghail a làimhseachadh mar seo, cleachd am brata -b. Nuair a chleachdas tu Expectk, tha an roghainn seo air a shònrachadh mar -guffer.

Ma tha an sreang "-" air a thoirt seachad mar ainm-faidhle, thèid cur-a-steach àbhaisteach a leughadh an àite sin. Cleachd "./-" airson leughadh bho fhaidhle a chaidh ainmeachadh mar ainm "-".

Bidh bratach -i ag adhbhrachadh Sùileachadh gum faigh thu òrdughan eadar-obrachail an àite an leughadh bho fhaidhle. Tha gealladh air a chrìochnachadh tron ​​òrdugh fàgail no air EOF. Thathas a 'gabhail ris a' bhratach -i mura h-eil feum air faidhle òrdugh no -c. Nuair a bhios tu a 'cleachdadh Expectk, tha an roghainn seo air a shònrachadh mar-tarraingteach.

- faodar a chleachdadh gus deireadh nan roghainnean a shealltainn. Tha seo feumail ma tha thu airson argamaid coltach ri roghainn a thoirt seachad don script agad às aonais a bhith air a mhìneachadh le Expect. Faodar seo a chleachdadh gu feumail san #! loidhne gus casg a chur air eadar-mhìneachadh sam bith le bhith ag amharc. Mar eisimpleir, fàgaidh na leanas na h-argamaidean tùsail a 'gabhail a-steach ainm an sgriobt anns an argv variable.

#! / usr / local / bin / expect -

Thoir fa-near gum feum na freagairtean àbhaisteach getopt (3) agus execve (2) a bhith air an cumail nuair a tha iad a 'cur argamaidean ris an #! loidhne.

Gheibhear am faidhle $ exp_library / expect.rc gu fèin-ghluasadach ma tha e an-dràsta, mura tèid am bratach -N a chleachdadh. (Nuair a chleachdas tu Expectk, tha an roghainn seo air a shònrachadh mar -NORC.) Goirid às dèidh seo, gheibh am faidhle ~ / .expect.rc gu fèin-obrachail, mura h-eil am flag air a chleachdadh. Ma tha an caochladh àrainneachd DOTDIR air a mhìneachadh, thèid a làimhseachadh mar eòlaire agus tha .expect.rc air a leughadh às an sin. Nuair a chleachdas tu Expectk, thèid an roghainn seo a shònrachadh mar -norc. Chan eil an lorg seo ach a 'tachairt an dèidh dha brataichean -c sam bith a thoirt gu buil.

adhbharan -v Sùileachadh clò-bhualadh a dhuilleag agus fàg às. Tha am bratach co-fhreagarrach ann an Expectk, a tha a 'cleachdadh ainmean bratach fada, a' sealltainn.

Tha args Roghainneil air an togail ann an liosta agus air an stòradh anns an argv variable ainmichte. Thèid argc a thòiseachadh gu fad argv.

Tha Argv0 air a mhìneachadh mar ainm an sgriobt no na dinnear mura h-eil sgriobt air a chleachdadh. Mar eisimpleir, bidh na leanas a 'briodadh ainm an sgriobt agus a' chiad trì argamaidean:

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

Òrdughan

Tha dùil gu bheil thu a 'cleachdadh Inneal-stiùiridh Inneal. Tha Tcl a 'toirt seachad sruth smachd (ma tha, airson, briseadh), luachadh faireachdainn agus grunn fheartan eile mar ath-aithris agus mìneachadh modh-obrach. Is e na h-àithnean a tha air an cleachdadh an-seo ach nach eil air am mìneachadh (seata, ma tha, exec) òrdughan Tcl. Tha dùil gum bi taic ri òrdughan a bharrachd. Mura h-eil a chaochladh air a chomharrachadh, tillidh òrdughan an sreang falamh

Tha òrdughan air an liostadh ann an òrdugh na h-aibidil gus am faod iad a bhith air an suidheachadh gu luath. Ach, dh'fhaoidte gum bi e nas fhasa do luchd-cleachdaidh ùra tòiseachadh le bhith a 'leughadh nan tuairisgeul air sìolachadh, cuir, dùil agus eadar-obrachadh san òrdugh sin.

dùin [-slave] [-onexec 0 | 1] [-i spawn_id]

dùin an ceangal ris a ' phròiseas làithreach. Bidh a 'chuid as motha de phrògraman eadar-ghnìomhach a' lorg EOF air an stdin agus a 'fàgail; Mar as trice bidh seo dùinte mar as trice airson am pròiseas a mharbhadh cuideachd. Tha am bratach -i a 'dearbhadh gu bheil am pròiseas dùinte a fhreagras ris an spawn_id ainmichte.

Bidh an dà chuid a 'dùileachadh agus ag eadar-obrachadh lorgidh iad nuair a thig am pròiseas làithreach a- mach agus gum bi iad dùinte, ach ma mharbhas tu am pròiseas le bhith ag ràdh, "cuir às do $ pid" a mharbhadh, feumaidh tu dùnadh gu soilleir .

Bidh bratach -onexec a 'co-dhùnadh a bheil an t-seic sìolaidh dùinte ann am pròiseasan ùra air an sìolachadh no ma tha am pròiseas air a chòmhdach. Gus suaicheantas sìolaidh fhosgladh, cleachd an luach 0. Tha luach iomlan sam bith gun neòlas a 'feuchainn an dùin a dhùnadh ann am pròiseasan ùra sam bith.

Bidh bratach-slabhra a 'dùnadh an tràill a tha co-cheangailte ris an ìomhaigh sìolaidh. Nuair a tha an ceangal dùinte, tha an tràill dùinte gu fèin-obrachail cuideachd ma tha e fhathast fosgailte.

Chan eil e gu diofar co dhiubh a tha an ceangal dùinte gu h-obann no gu follaiseach, bu chòir dhut fònadh feitheamh gus an slot pròiseas co-cheangail co-fhreagarrach a ghlanadh. Chan eil an t-òrdugh dlùth a 'gairm feitheamh oir chan eil gealladh sam bith ann gum bi ceangal pròiseas dùnaidh a' fàgail.

debug [[-now] 0 | 1]

smachd air Tcl debugger a 'toirt cothrom dhut ceum tro aithrisean agus seataichean-puing a shuidheachadh.

Le argamaidean sam bith, thèid 1 a thilleadh mura h-eil an neach-dùbhlain a 'ruith, no tha 0 air ais.

Le 1 argamaid, tha an debugger air tòiseachadh. Le argamaid 0, stad an neach-dìon. Ma tha argamaid 1 air a bhith air thoiseach leis an-flag, bidh an debugger air tòiseachadh sa bhad. A dh 'aindeoin sin, tha an neach-dùbhlain air tòiseachadh leis an ath aithris Tcl.

Chan eil an t-òrdugh debug a 'toirt atharrachadh air sgadan sam bith. Dèan coimeas eadar seo agus tòiseachadh a 'sùileachadh leis an-bhratach.

Bidh an t-òrdugh dì-cheangail a 'ceangal a chèile ri pròiseas togte bhon phort - adhair . Tha e fhathast a 'ruith sa chùl-raon. Tha a 'phròiseas a' toirt a bhuidheann phròiseis fhèin. Thèid I / O coitcheann ath-stiùireadh gu / dev / null .

Bidh an criomag a leanas a 'cleachdadh dì-cheangal gus leantainn air adhart leis an sgriobt sa chùlaibh.

ma tha {[fork]! = 0} a 'fàgail dùnadh. S an Iar- S an Iar-

Bidh an sgriobt a leanas a 'leughadh facal-faire agus an uairsin ruith prògram gach uair a dh' iarras facal-faire gach uair a thèid a ruith. Bidh an sgriobt a 'solarachadh am facal-faire gus nach fheum thu a-mhàin a thaghadh aon uair.

send_user "am facal-faire? \" expect_user -re "(. *) \ n" airson {} 1 {} {ma tha {[fork]! = 0} {cadal 3600; lean} dì-cheangal spawn priv_prog expect Password: send "$ expect_out ( 1, sreath) \ r ". S an Iar- S an Iar- exit}

Is e buannachd a bhith a 'cleachdadh dì-cheangal thairis air a' phròiseas pròiseas sligean (&) a tha ann an dùil gum faod dùil a bhith air na crìochan teine ​​a shàbhaladh mus tèid an ceangal a-mach agus an uair sin cuiridh iad iad gu ptys ùra. Le &, Chan eil cothrom ann pàtranan an togalaich a leughadh seach gu bheil an ceann-uidhe mar-thà air a cheangal leis an àm a tha dùil gum faigh e smachd.

fàgail [-opts] [status]

adhbharan Sùileachadh a bhith a 'fàgail no ag ullachadh mar sin gus sin a dhèanamh.

Tha bratach- airxit ag adhbhrachadh gum bi an ath argamaid air a chleachdadh mar neach-làimhseachaidh fàgail. Às aonais argamaid, tillidh an làimhseachadh fàgail làithreach.

Tha am bratach a tha ag adhbhrachadh a-mach ag adhbhrachadh Sùileachadh a bhith ag ullachadh airson a dhol a-mach ach stad gu leòr air smachd a thoirt air ais don t-siostam obrachaidh. Bidh an neach-làimhseachaidh fàgail air a mhìneachadh leis a 'chleachdaiche air a ruith cho math ri luchd-làimhseachaidh taobh a-staigh Expect fhèin. Chan eil dùil gum bu chòir òrdughan a chur gu bàs. Tha seo feumail ma tha thu a 'ruith Tha dùil ri leudachaidhean Tcl eile. Tha an t-eadar-theangair làithreach (agus prìomh uinneag ma tha an àrainneachd Tk) a 'fuireach gus am bi leudachaidhean Tcl eile a' glanadh. Ma thèid fàgail Expect a ghairm a-rithist (ge-tà, dh'fhaodadh seo tachairt), chan eil an luchd-làimhseachaidh a 'tighinn air ais.

Nuair a thig thu a-mach, tha a h-uile ceangal ri pròiseasan sìolaichte dùinte. Thèid dùnadh a lorg mar EOF tro phròiseasan sìolaichte. chan eil fàgail a ' gabhail gnìomh sam bith eile nas fhaide na an obair _exit (2) àbhaisteach. Mar sin, faodaidh pròiseasan sìolachadh nach eil a 'dèanamh cinnteach gum faod EOF cumail a' dol. (Tha grunn shuidheachaidhean cudromach airson a bhith a 'co-dhùnadh, mar eisimpleir, dè na comharran a thèid a shìneadh a-mach, ach tha iad sin an urra ri siostam, mar as trice air a chlàradh fo gheàrr-chunntais (3).) Bidh pròiseasan sìolaichte a bhios a' leantainn air adhart air an sealbhachadh le init.

inbhe (no 0 mura deach a shònrachadh) air ais mar inbhe fàgail Expect . tha fàgail air a chur gu buil gu h-obann ma thèid crìoch a chur air an sgriobt.

exp_continue [-continue_timer]
Tha an t-òrdugh a 'leigeil leinn a bhith a' cumail a 'dol a' dol an gnìomh seach a bhith a 'tilleadh mar as àbhaist. Mar as trice cuir crìoch air ath-shuidheachadh an timer ùine. Tha bratach -continue_timer a ' cur bacadh air an t-àm-tòisich bho bhith air ath-thòiseachadh. (Faicibh a ' sùileachadh airson barrachd fiosrachaidh.)

fa-near [-f faidhle] luach
ag adhbhrachadh barrachd òrdughan gus fiosrachadh breithneachaidh a chuir a-steach gu Sùileachadh air stderr ma tha luach neo-neoni. Tha an toradh seo air a chiorramach ma tha luach 0. Tha am fiosrachadh breithneachaidh a 'toirt a-steach gach caractar a gheibhear, agus a h-uile oidhirp a thèid a dhèanamh gus an toradh làithreach a cho-fhreagairt a rèir nam pàtrain

Ma tha am faidhle roghainneil air a thoirt seachad, tha a h-uile toradh dearbhaidh agus mearachdan sgrìobhte air a sgrìobhadh chun an fhaidhle sin (a dh 'aindeoin luach an luach ). Tha faidhle toraidh breithneachaidh sam bith roimhe seo dùinte.

Tha bratach- nnò ag adhbhrachadh gu h-àraidh tuairisgeul a thoirt air ais de na h-argamaidean neo-fiosrachaidh as ùire a chaidh a thoirt seachad.

exp_open [args] [-i spawn_id]
a 'tilleadh aithnichear faidhle Tcl a fhreagras ris an ìomhaigh sìolaidh tùsail. Faodar an aithnichear faidhle a chleachdadh an uair sin mar gum biodh e fosgailte le comharra fosgailte Tcl. (Cha bu chòir an ìomhaigh sìolaidh a chleachdadh a-nis. Cha bu chòir feitheamh a chur gu bàs.

Tha am bratach -leaveopen a ' fàgail an ìomhaigh sìolaidh fosgailte airson ruigsinneachd tro Òrduighean Sùl . Feumaidh feitheamh a bhith air a chur gu bàs air an ìomhaigh sìolaidh.

exp_pid [-i spawn_id]
a 'tilleadh a' phròiseis ID a tha a 'freagairt ris a' phròiseas a tha air a sìolachadh an-dràsta Ma tha am bratach -i air a chleachdadh, thill am pid a rèir an t-sìolaidh a chaidh a thoirt seachad.

exp_send
Tha e na alias airson a chuir .

sgaoileadh
Is e alias airson send_error a th 'ann .

exp_send_log
na alias airson send_log .

sgaoileadh
Tha e na alias airson send_tty .

sgaoileadh
Is e alias airson send_user a tha ann .

exp_version [[-exit] dreach]
feumail airson dèanamh cinnteach gu bheil an sgriobt co-chòrdail ris an tionndadh làithreach de Expect.

Le argamaidean sam bith, thèid an tionndadh làithreach de Expect a thilleadh. Faodaidh an dreach seo a bhith air a chòdachadh anns an sgriobt agad. Ma tha fios agad gu bheil thu a 'cleachdadh feartan de dh' dreachan ùra, faodaidh tu dreach nas tràithe a shònrachadh.

Am measg nan dreachan tha trì àireamhan air an sgaradh le dotagan. Is e ciad àireamh an àireamh as motha. Chan eil teagamh nach bi sgrìobhainnean a chaidh a sgrìobhadh airson dreachan de Shùileachadh le àireamh mòr eadar-dhealaichte ag obair. tha exp_version a ' tilleadh mearachd mura h-eil na prìomh àireamhan co-ionnan.

Is e an dàrna àireamh an àireamh bheag. Faodaidh sgriobtaichean a chaidh a sgrìobhadh airson tionndadh le àireamh nas lugha na an dreach làithreach a bhith an crochadh air feart ùr agus 's dòcha nach bi iad a' ruith. tha exp_version a ' tilleadh mearachd ma tha na h-àireamhan mòra a' maidseadh, ach tha an àireamh bheag sgriobt nas motha na sin an Expect ruith.

Is e an treas fear àireamh nach eil a 'gabhail pàirt anns a' choimeas eadar-theangachadh. Ach, tha e air a dhol am meud nuair a thathar a ' sùileachadh sgaoileadh bathar-bog Sùileachadh ann an dòigh sam bith, mar eisimpleir le sgrìobhainnean a bharrachd no làn-bhuileachadh. Tha e air ath-shuidheachadh gu 0 air gach dreach beag ùr.

Leis a 'bhratach- leum , Dèan sùil air mearachd agus cuiridh e a-mach ma tha an tionndadh a-mach às a dhèidh.

an dùil [[-opts] pat1 body1] ... [-opts] patn [bodyn]
a 'feitheamh gus am bi aon de na pàtranan a' freagairt ri toradh pròiseas sìolaichte, tha ùine ùine shònraichte air a dhol seachad, no faodar crìoch-faidhle fhaicinn. Ma tha am buidheann mu dheireadh falamh, faodar a fàgail às.

Tha pàtrain bhon fheadhainn as ùire a ' sùileachadh_before tha òrdugh air an cleachdadh gu h-iongantach mus tèid pàtrain sam bith eile a dhèanamh. Tha pàtran bhon riaghaltas expect_after as ùire air an cleachdadh gu h-iongantach às dèidh pàtrain sam bith eile.

Ma tha na h-argamaidean gu lèir a ' sùileachadh gum feum an aithris barrachd air aon loidhne, faodar na h-argamaidean uile a bhith "air an toirt a-steach" ann an aon gus nach bi a' crìochnachadh gach loidhne le cùl-taic. Anns a 'chùis seo, bidh na h-ionadan àbhaisteach Tcl a' tachairt a dh'aindeoin na braidsean.

Mas e pàtran an eof prìomh-fhacal, thèid am buidheann co-fhreagair a chur gu bàs aig deireadh-faidhle. Mas e pàtran an ùine fhacal prìomh fhacal, thèid am buidheann co-fhreagraidh a chuir gu bàs air ùine. Mura h-eil feum air prìomh fhacal-fhacal a-nis, thèid gnìomh null falaichte a chur gu bàs nuair a bhios tu a 'dol a dhìth. Is e 10 diog a th 'anns an ùine àbhaisteach airson ùine ach faodar a shuidheachadh, mar eisimpleir gu 30, leis an àithne "set timeout 30". Faodaidh ùine-ama neo-chrìochnach a bhith air a chomharrachadh leis an luach -1. Mas e pàtran am prìomh-fhacal prìomh-fhacal, thèid a 'chuirp a chuir gu bàs an ceann ùine no crìoch-faidhle.

Ma tha pàtran a 'maidseadh, thèid an corp co-fhreagarrach a chur gu bàs. sùileachadh toradh toradh na buidhne (no an t-sreang falamh mura h-eil pàtran air a mhaidseadh). Ma tha grunn phàtranan a 'maidseadh, tha an tè a nochdas an toiseach air a chleachdadh airson buidheann a thaghadh.

Gach turas a thig toradh ùr, bidh e air a choimeas ris gach pàtran san òrdugh a tha iad air an liostadh. Mar sin, faodaidh tu a bhith a 'feuchainn ri gèam neo-làthaireachd le bhith a' dèanamh rudeigin a tha cinnteach gu bheil am pàtran mu dheireadh a 'nochdadh mar prompt. Ann an suidheachaidhean far nach eil prìomhachas ann, feumaidh tu ùine a chleachdadh (dìreach mar a bhiodh tu nam biodh tu ag eadar-obrachadh le làimh).

Tha pàtrain air an sònrachadh ann an trì dòighean. Mar as trice, tha pàtrain air an sònrachadh mar gu bheil an t-òrdugh gèam teann Tcl. (Tha pàtrain mar seo cuideachd coltach ri freagairtean cunbhalach C-shligean mar as trice air an ainmeachadh mar phàtrain "glob"). Dh'fhaoidte gum bi am bratach -gl air a chleachdadh gus pàtranan a dhìon a dh 'fhaodadh a bhith a' maidseadh brataichean bho bhith a 'dèanamh sin. Bu chòir pàtran sam bith a tha a 'tòiseachadh le "-" a dhìon mar seo. (Tha na loidhnichean uile a 'tòiseachadh le "-" glèidhte airson roghainnean san àm ri teachd.)

Mar eisimpleir, tha an criomag a leanas a 'coimhead airson logadh soirbheachail. (Thoir fa-near gu bheilear a 'meas gu bheileas a' cur às do ghortachadh mar dhòigh-obrach a tha air a mhìneachadh ann an àite eile san script

Tha dùil agam {trang trang trang; failed_corting} às aonais "facal-faire neo-dhligheach" a 'toirt a-mach crìoch a chur air ùine a chaidh a thoirt a-steach}

Tha luachan a dhìth air a 'cheathramh pàtran oir tha àite ann, a bhiodh a' sgaradh a 'phàtrain bhon ghnìomh a-rithist. Feumaidh pàtrain leis an aon ghnìomh (mar an 3mh agus an 4mh) feum air na gnìomhan a chlàradh a-rithist. Faodar seo a sheachnadh le bhith a 'cleachdadh pàtrain stoidhle regexp (faic gu h-ìosal). Gheibhear barrachd fiosrachaidh mu bhith a 'cruthachadh phàtrain stoidhle glob anns an leabhran Tcl.

Tha pàtrain stoidhle Regexp a 'leantainn an co-chòrdadh a tha air a mhìneachadh le regexp Tcl (geàrr airson òrdugh "facal cunbhalach"). thèid pàtrain regexp a thoirt a-steach leis a 'bhratach -re . Faodar an eisimpleir roimhe seo ath-sgrìobhadh le regexp mar:

Tha dùil agam {trang trang trang; exp_continue} -re "failed | dlighe-sgrìobhaidh mì-dhligheach" toirmeasg crìoch a chur air crìoch a chur air ceangal}

Tha an dà sheòrsa phàtran "unanchored". Tha seo a 'ciallachadh nach fheum pàtranan a bhith a' maidseadh an t-sreang air fad, ach faodaidh iad tòiseachadh air a 'ghèam àite sam bith anns an t-sreang (fhad's a tha a h-uile càil a' maidseadh). Cleachd ^ gus toiseach sreang a mhaidseadh, agus $ gus an deireadh a mhaidseadh. Thoir fa-near mura h-eil thu a 'feitheamh airson deireadh sreang, is urrainn do na freagairtean agad a dhol suas ann am meadhan an t-sreang seach gu bheilear a' toirt iomradh orra bhon phròiseas sìolaichte. Ged a tha iad fhathast a 'dèanamh toraidhean ceart, faodaidh an toradh a bhith neo-nàdarra. Mar sin, tha cleachdadh $ air a bhrosnachadh mas urrainn dhut cunntas a thoirt air na caractaran aig deireadh sreang.

Thoir fa-near, ann an iomadh deasachadh, gu bheil ^ agus $ a 'maidseadh toiseach is deireadh nan loidhnichean fa leth. Ach, a chionn 's nach eil dùil nach eil loidhne air a shònrachadh, tha na caractaran sin a' maidseadh toiseach is deireadh an dàta (an àite nan loidhnichean) an-dràsta anns a 'bhufair co-ionnan. (Cuideachd, faic an nota gu h-ìosal air "mì-mhodh siostam.")

Tha bratach -ex ag adhbhrachadh gum bi am pàtran air a mhaidseadh mar shreath "ceart". Chan eil mìneachadh air *, ^, msaa air a dhèanamh (ged a dh 'fheumas na gnàthasan Tcl àbhaisteach a bhith air an cumail fhathast). Tha pàtrain ceart an-còmhnaidh air an cleachdadh.

Tha bratach -nocase ag adhbhrachadh charactaran as motha den toradh airson coimeas a dhèanamh orra mar gum biodh iad nan caractaran beaga. Chan eil buaidh air a 'phàtran.

Fhad 'sa tha iad a' leughadh toradh, faodaidh còrr is 2000 bytes smachd a chur air bytes nas tràithe a bhith "air an dearmad". Dh'fhaodadh seo a bhith air atharrachadh leis an fheum match_max . (Thoir fa-near gur urrainn luachan cus mòr a bhith a 'slaodadh sìos pàtran a' phàtrain.) Ma tha patlist làn_buffer , thèid an corp cho-fhreagraidh a thoirt gu buil ma tha match_max bytes air fhaighinn agus cha deach pàtran sam bith eile a mhaidseadh. Co dhiubh a tha an làn_buffer keyword air a chleachdadh no nach eil, tha na caractaran air an dìochuimhnich air an sgrìobhadh gu expect_out (buffer).

Mas e patlist an fhacal-fhacal null , agus faodar nulls (tron òrdugh remove_nulls ), thèid an corp co-fhreagarrach a chur gu bàs ma tha aon ASCII 0 air a mhaidseadh. Chan urrainnear maidseadh 0 bytes tro phàtrain glob no regexp.

Nuair a thèid pàtran a cho-fhreagairt (no eof no full_buffer), thèid co-ionnan sam bith agus toradh sam bith eile a shàbhaladh a shàbhaladh anns an variable expect_out (buffer) . Tha suas ri 9 geamaichean foghairidh regexp air an gleidheadh ​​anns na variables expect_out (1, sreang) tro expect_out (9, sreath) . Ma thèid am bratach- dìnsearan a chleachdadh mus tèid pàtran, na h-àireamhan-tòiseachaidh is crìochnachaidh (ann am foirm a tha freagarrach airson lrange ) de na 10 sreath a chumail anns na variables expect_out (X, toiseach) agus expect_out (X, deireadh) far a bheil X digit, a 'freagairt ri suidheachadh an fho-fharpair sa bufair. 0 a 'toirt iomradh air tiotalan a fhreagair a' phàtran gu lèir agus tha e air a chruthachadh airson pàtranan glob a bharrachd air pàtrain regexp. Mar eisimpleir, ma tha pròiseas air toradh a dhèanamh de "abcdefgh \ n", toradh:

sùileachadh "cd"

mar gum biodh na h-aithrisean a leanas air a chur gu bàs:

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

agus tha "efgh \ n" air fhàgail san bufair toraidh. Ma chruthaich pròiseas an toradh "abbbcabkkkka \ n", toradh:

dùil -indices -re "b (b *). * (k +)"

mar gum biodh na h-aithrisean a leanas air a chur gu bàs:

seallaibh expect_out (0, tòisich) 1 seata expect_out (0, deireadh) 10 air a shuidheachadh expect_out (0, sreang) bbbcabkkkk set expect_out (1, tòisich) 2 set expect_out (1, deireadh) 3 set expect_out (1, sreang) bb set expect_out (2, tòisich) 10 seata expect_out (2, crìoch) 10 air a shuidheachadh expect_out (2, sreang) k set expect_out (buffer) abbbcabkkkk

agus tha "a \ n" air fhàgail san bufair toraidh. Bidh am pàtran "*" (agus -re ". *") A 'brùthadh a' bhufair toraidh gun a bhith a 'leughadh toradh sam bith eile bhon phròiseas.

Mar as trice, thèid an toradh a tha air a mhaidseadh a thoirt air falbh bho buffers taobh a-staigh Expect. Dh'fhaodadh seo a bhith air a chasg le ro-sgrìobhadh pàtran leis a 'bhratach gun ath - roinn . Tha am bratach seo gu h-àraidh feumail ann a bhith a 'feuchainn (agus faodar a ghiorrachadh gu "-not" airson goireasachd fhad' sa tha thu a 'feuchainn).

Tha an ìomhaigh sìolaidh co-cheangailte ris an toradh co-ionann (no eof no full_buffer) air a stòradh ann expect expect (spawn_id) .

Tha am bratach fad-ùine ag adhbhrachadh gu bheil an-dràsta a 'sùileachadh an òrdugh an luach a leanas a chleachdadh mar ùine-ama an àite a bhith a' cleachdadh luach an caochlaideach ùine.

Mar as trice, bidh pàtranan co-ionann ri toradh bhon phròiseas làithreach, ge-tà, tha am bratach -i a ' dearbhadh gu bheil an toradh bhon liosta spawn_id ainmichte air a mhaidseadh an aghaidh pàtrain sam bith a leanas (suas chun ath--i). Bu chòir an liosta spawn_id a bhith na liosta eadar-dhealachaichte le whitespace de spawn_ids no caochlaideach a 'toirt iomradh air liosta mar sin de spawn_ids.

Mar eisimpleir, bidh an eisimpleir a leanas a 'feitheamh ri "ceangal" bhon phròiseas làithreach, no "trang", "fàilligeadh" no "facal-faire neo-dhligheach" bhon spawn_id ainmichte le $ proc2.

Tha dùil $ {-i $ proc2 trang {a 'dol trang \ n; exp_continue} -re "failed | dlighe-sgrìobhaidh mì-dhligheach" toirmeasg crìoch a chur air crìoch a chur air ceangal}

Faodar luach an atharrachaidh cruinne any_spawn_id a chleachdadh gus pàtranan a mhaidseadh gu spawn_ids sam bith a tha air an ainmeachadh leis a h-uile brataich eile a tha a ' sùileachadh an- dràsta. Tha an spawn_id bho bhratach -i le pàtran sam bith co-cheangailte (ie, às dèidh sin le fear eile -i ) air a thoirt seachad do phàtranan sam bith eile san aon dòigh ris an t-òrdugh a tha co-cheangailte ri any_spawn_id.

Faodaidh am bratach -i cuideachd atharrachadh a dhèanamh air caochladh cruinne san t-suidheachadh sin, thèid an caochladair a leughadh airson liosta de ids sìolaidh. Thèid an caochladh ath-leughadh nuair a bhios e ag atharrachadh. Tha seo a 'toirt seachad dòigh air an stòr I / O atharrachadh fhad' sa tha an t-òrdugh ann an gnìomh. Is e 'spawn ids' a th 'air an toirt seachad mar seo.

Bidh gnìomhan leithid briseadh agus cumail a ' toirt adhbharan do structaran smachd (ie, airson , proc ) a ghiùlain san dòigh àbhaisteach. Tha an t-òrdugh a 'leigeil leinn a bhith a' cumail a 'dol a' dol an gnìomh seach a bhith a 'tilleadh mar as àbhaist.

Tha seo feumail airson seachnadh lùban soilleir no a rithist a 'sùileachadh bheachdan. Tha an eisimpleir a leanas mar phàirt de chriomag airson uèir-fhrith-uidheamachadh. Tha an crìochnachadh a ' seachnadh a bhith a' sgrìobhadh dàrna fear a ' sùileachadh aithris (a bhith a' coimhead airson an sgiobalta a-rithist) ma chuireas an rlogin a-steach airson facal-faire.

bhathas a 'sùileachadh {Facal-faire: {stty -echo send_user') facal-faire (airson $ user) air $ host: "expect_user -re" (. *) \ n "send_user" \ n "cuir" $ expect_out (1, sreang) \ r "stty echo exp_continue} mì-cheart {send_user "facal-faire neo-dhligheach no cunntas \ n" exit} a 'crìochnachadh {send_user "ceangal ri $ host air a shìneadh a-mach \ n" exit} chaill e ceangal {send_user \ "don aoigheachd: $ expect_out (buffer)" exit} - re $ prompt}

Mar eisimpleir, dh'fhaodadh na criomagan a leanas cuideachadh le stiùireadh luchd-cleachdaidh eadar-obrachadh a tha mar-thà fèin-ghluasadach mu thràth. Anns a 'chùis seo, thèid am terminal a chur ann am modh amh. Ma bhriogas an cleachdaiche "+", tha caochladair air a dhol suas. Ma tha "p" air a bhrùthadh, thèid grunn thoraidhean a chur chun a 'phròiseas, is dòcha gun cuir iad e ann an dòigh air choreigin, agus "i" a' leigeil leis an neach-cleachdaidh eadar-obrachadh leis a 'phròiseas, gu h-èifeachdach a' goid smachd bhon sgriobt. Anns a h-uile cùis, tha an crìonadh a ' leigeil leis an àm an-dràsta a bhith an dùil cumail a' dol le maidseadh pàtrain às deidh do ghnìomh làithreach a dhèanamh.

stty amh -echo expect_after {-i $ user_spawn_id "p" {cuir "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {eadar-ghnìomhach; exp_continue} fàgail "leig às"}

Mar as trice, cuir crìoch air ath-shuidheachadh an timer ùine. Chan eil an t-àm-ama air ath-thòiseachadh, ma thèid crìoch a chur air a 'bhratach -continue_timer .

s an Iar-
ag obair gu dìreach ris an expect_before ach a-mhàin ma tha pàtran bhon dà chuid a ' sùileachadh agus expect_after a' maidseadh, thathar a ' sùileachadh gum bi am pàtran air a chleachdadh. Faic an co - dhùnadh expect_before airson barrachd fiosrachaidh.

Aotrom Trom Anabarrach
a 'toirt na h-aon argamaidean mar a tha dùil , ge-tà, tillidh e sa bhad. Thèid pàtrain a dhearbhadh nuair a thig ionmhas ùr a-steach. Tha am pàtran a tha a ' dol a-mach às a chèile agus bunaiteach gun bhrìgh gu expect_background agus tha iad air am fàgail gu sàmhach. A dh 'aindeoin sin, tha an t-ùghdarras expect_background a' cleachdadh expect_before agus expected_after dìreach mar a tha dùil .

Nuair a thathar a 'measadh gnìomhan expect_background, thèid bacadh a chur air a bhith a' giullachadh cùl-raon airson an aon id-sgaoilidh. Tha cùl-fhiosrachadh air a dhubhadh às nuair a bhios an gnìomh a 'crìochnachadh. Ged a tha obair cùl-raon air a bhacadh, tha e comasach dèanamh (aghaidh) a bhith a 'sùileachadh air an aon ìomhaigh sìolaidh.

Chan urrainnear dèanamh cinnteach gun tèid an expect_background a dhubhadh às. Tha dùil_background airson ìomhaigh sìolaidh sònraichte air a sguabadh às le bhith a 'cur an cèill expect_background ùr leis an aon ìomhaigh sìolaidh. Le bhith ag innse do expect_background gun phàtran sam bith, bidh e a 'toirt às an ìomhaigh sìolaidh a chaidh a thoirt seachad bhon chomas a bhith a' maidseadh phàtranan ris a 'chùl.

Tha e comasach do roghainnean atharrachadh aig àm sam bith.
a 'toirt na h-aon argamaidean mar a tha dùil , ge-tà, tillidh e sa bhad. Tha paidhrichean gnìomh pàtran bhon fheadhainn as ùire a ' sùileachadh_ air adhart leis an aon dearbh sìolaidh air an cur an cèill gu h-iongantach ri feadhainn sam bith a leanas a' sùileachadh gum faigh iad òrdughan. Ma tha pàtran a 'maidseadh, thèid a làimhseachadh mar gum biodh e air a shònrachadh san òrdugh dùil fhèin, agus thèid an corp co-cheangailte a chur gu bàs ann an co-theacs an òrdugh a tha an dùil . Ma tha pàtrain bhon dà chuid a ' sùileachadh_ roimh-dhèan agus a' sùileachadh faodaidh iad a bhith a 'maidseadh, thathar a' cleachdadh a 'phàtran ris a bheil dùil roimhe

Mura h-eil pàtran air a shònrachadh, chan eil an ìomhaigh sìolaidh air a sgrùdadh airson pàtrain sam bith.

Mura h-eil bratach -i air a thoirmeasg , expect_before tha pàtranan a 'maidseadh an aghaidh an t- seisein sìolaidh air a mhìneachadh aig an àm a chaidh an t-òrdugh expect_before a chur gu bàs (chan ann nuair a tha am pàtran air a mhaidseadh).

Tha am bratach -foin ag adhbhrachadh expect_before na comharraidhean a th 'ann an-dràsta de na pàtranan a cho- fhreagarraicheas iad a thilleadh. Gu bunaiteach, bidh e ag aithris air an ìomhaigh spawn a tha ann an-dràsta. Faodar sònrachadh roghainnean sìolachaidh roghnach a thoirt seachad airson fiosrachadh air an ìomhaigh sìolaidh sin. Mar eisimpleir

Tha e comasach do roghainnean atharrachadh aig àm sam bith

Aig a 'chuid as motha de dh'fhaodar aon sònrachadh sìolaidh ID a thoirt seachad. Bidh am bratach -indirect fodha air ìomhaighean sìolaidh dìreach a thig a-mhàin bho riochdachaidhean neo-dhìreach.

An àite sònrachadh sìolaidh, cuiridh am bratach "-all" air adhart "-info" gus aithris a thoirt air a h-uile h-ìomhaigh sìolaidh.

Faodar toradh bratach -info a chleachdadh a-rithist mar an argamaid a dh 'fhaodadh a bhith agad.

deasaich | deasaich an tùs]
mar a tha dùil ach tha e a 'leughadh charactaran bho / dev / tty (ie teachdaireachdan bhon neach-cleachdaidh). Mar as trice, bidh leughadh air a dhèanamh ann am modh bruichte. Mar sin, feumaidh na loidhnichean crìoch a chur air ais le dùil gum faic iad iad. Faodar seo atharrachadh tro stty (faic an t-òrdugh stty gu h-ìosal).

Tha e comasach do roghainnean atharrachadh aig àm sam bith.
mar a tha dùil ach tha e a 'leughadh charactaran bho stdin (ie teachdaireachdan bhon neach-cleachdaidh). Mar as trice, bidh leughadh air a dhèanamh ann am modh bruichte. Mar sin, feumaidh na loidhnichean crìoch a chur air ais le dùil gum faic iad iad. Faodar seo atharrachadh tro stty (faic an t-òrdugh stty gu h-ìosal).

forc
a 'cruthachadh pròiseas ùr. Tha am pròiseas ùr na leth-bhreac den phròiseas Sùil an- dràsta . Air soirbheachas, bidh fork a ' tilleadh 0 chun a' phròiseis ùr (leanabh) agus a 'tilleadh ID a' phròiseis bho phròiseas an leanaibh chun a ' phròiseis phàrant. Air fàilligeadh (gu h-àraidh air sgàth cion ghoireasan, me, àite-iomlaid, cuimhne), tillidh am bog -1 ris a ' phròiseas phàrant, agus chan eil pròiseas cloinne sam bith air a chruthachadh.

Bidh pròiseasan air am fàgail air falbh tron ​​òrdugh fàgail , dìreach mar a ' phròiseas tùsail. Tha cead aig pròiseasan air a bhith a 'sgrìobhadh gu na faidhlichean log. Mura dèan thu casg a-steach air a 'mhòr-chuid de na pròiseasan, faodaidh an toradh a bhith meallta.

Dh'fhaodadh cuid de ghnìomhachdan pty a bhith air am meas le mòran leughadairean agus sgrìobhadairean, eadhon gu tur. Mar sin, is e as sàbhailte a th 'ann am bogadh mus tèid pròiseasan sìolachaidh a dhèanamh.

eadar-theangachadh [string1 body1] ... [sreath [bodyn]]
toirt smachd air a ' phròiseas a th' ann an-dràsta don neach-cleachdaidh, gus am bi prìomh-cheanglaichean air an cur chun a ' phròiseis làithreach, agus thèid stdout agus stderr a' phròiseas làithreach a thilleadh.

Faodar paidhrichean corp-cuingeach a bhith air an sònrachadh mar argamaidean, agus mar sin thèid am buidheann a chur gu bàs nuair a thèid an sreang co-fhreagarrach a chur a-steach. (Mar as trice, chan eil an t-sreang air a chur chun a ' phròiseis làithreach.) Thathar a' gabhail ris a 'cho- theangair eadar-theangair , ma tha a' bhuidheann mu dheireadh air chall.

Ma tha na h-argamaidean chun an aithris eadar-ghnìomhach gu lèir ag iarraidh barrachd air aon loidhne, faodar na h-argamaidean uile a bhith air an "braced" ann an aon gus nach bi a 'crìochnachadh gach loidhne le cùl-taic. Anns a 'chùis seo, bidh na h-ionadan àbhaisteach Tcl a' tachairt a dh'aindeoin na braidsean.

Mar eisimpleir, bidh an t-òrdugh a leanas a 'ruith eadar-obrachadh le na paidhrichean sreath sreath-corp a chaidh a mhìneachadh: Nuair a thèid z Z a bhrùthadh, tha dùil gu bheil croch air. (Bidh am bratach- iarainn a ' ath-nuadhachadh nam modhan deireannach.) Nuair a thèid a chur sìos le A, bidh an neach-cleachdaidh a' faicinn "thu a 'sgrìobhadh smachd-A" agus thèid a' phròiseas a chur gu A. Nuair a thèid $ a bhrùthadh, bidh an neach-cleachdaidh a 'faicinn a' chinn-latha. Nuair a tha C air a bhruthadh, Sùchaibh air falbh . Ma thèid "foo" a chuir a-steach, bidh an neach-cleachdaidh a 'faicinn "bar". Nuair a tha ~~ air a bhrùthadh, tha an eadar-theangair ' Expect' a ' ruith eadar-ghnìomhach.

shuidhich CTRLZ \ 032 eadar-theangachadh {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "rinn thu a 'sgrìobhadh smachd-A \ n"; cuir "\ 001"} $ {send_user "Is e an ceann-latha [[cruth cruth [diogan clog]]."} \ 003 exit foo {send_user "bar"} ~~}

Ann am paidhrichean corp-cuingeach, tha na teinean air am maidseadh san òrdugh air an clàradh mar argamaidean. Chan eil tiotal a bhios a 'maidseadh gu ìre air an cur chun a' phròiseis làithreach a rèir an còrr a thig. Ma thèid caractaran an uairsin a chur a-steach gus nach urrainn a bhith na gheama tuilleadh, cha tèid ach am pàirt den t-sreang a chur chun a ' phròiseis nach urrainn dhut gèam eile a thòiseachadh. Mar sin, faodaidh tiotalan a tha a 'toirt pàirt de gheamaichean pàirteach maidseadh nas fhaide air adhart, ma dh' fhàillig na tiotalan tùsail a bha a 'feuchainn ri co-ionnan a dhèanamh.

Gu h-àbhaisteach, tha maids sreang ceart le cairtean fiadhaich sam bith. (An coimeas ris, tha an t-òrdugh a tha dùil a ' cleachdadh pàtranan stoidhle glob mar as trice.) Faodar bratach -ex a chleachdadh gus pàtranan a dhìon a bhiodh eadar-dhealaichte a' maidseadh brataichean eadar-dhealaichte bho bhith a 'dèanamh sin. Bu chòir pàtran sam bith a tha a 'tòiseachadh le "-" a dhìon mar seo. (Tha na loidhnichean uile a 'tòiseachadh le "-" glèidhte airson roghainnean san àm ri teachd.)

Tha an-flag ag adhbhrachadh an sreang a thèid a mhìneachadh mar phàtran stoidhle regexp. Anns a 'chùis seo, thathas a' stòradh foillidhean co-ionnan anns an eadar- theangachadh eadar- dhealaichte san aon dòigh ris an dòigh a tha dùil a bhith a ' stòradh a thoraidhean anns a' chaochlaideach expect_out . Tha am bratach -indices a ' faighinn taic san aon dòigh.

Bidh am pàtran eof a ' toirt a-steach gnìomh a thèid a chur gu bàs aig deireadh-faidhle. Faodaidh pàtran eadar-dhealaichte a bhith cuideachd a 'leantainn a' bhratach- fhreagairt anns a 'chùis sin ma tha e air a mhaidseadh ma thèid eof a lorg fhad' sa tha e a 'sgrìobhadh toradh. Is e am prìomh ghnìomh "return", gus am bi e ag eadar-obrachadh dìreach a 'tilleadh air EOF sam bith.

Tha am pàtran a ' dol a-mach a' toirt a-steach ùine -ama (ann an diogannan) agus gnìomh a thèid a chur gu bàs an dèidh dha caractaran sam bith a leughadh airson ùine sònraichte. Tha am pàtran ùine-ama a 'buntainn ris a' phròiseas a chaidh ainmeachadh. Chan eil ùine shònraichte ann. Chan eil buaidh sam bith aig an atharrachadh "timeout" (air a chleachdadh leis an òrdugh dùil ) air an ùine seo.

Mar eisimpleir, dh'fhaodadh an aithris a leanas a bhith air a chleachdadh airson luchd-cleachdaidh fèin-riaghlaidh nach do sgrìobh dad airson uair a thìde ach a tha fhathast a 'faighinn teachdaireachdan siostam tric:

eadar-theangachadh $ user_spawn_id fad ùine 3600 till -output \ $ spawn_id

Mas e am pàtran am prìomh fhacal falamh , agus faodar nulls (tron òrdugh remove_nulls ), thèid an corp co-fhreagarrach a chur gu bàs ma tha aon ASCII 0 air a mhaidseadh. Chan urrainnear maidseadh 0 bytes tro phàtrain glob no regexp.

Le bhith a 'deasachadh pàtran leis a' bhratach -iwrite tha an caochlaideach interact_out (spawn_id) ri shuidheachadh chun an spawn_id a cho-fhreagair a 'phàtran (no eof).

Bidh gnìomhan leithid briseadh agus cumail a ' toirt adhbharan do structaran smachd (ie, airson , proc ) a ghiùlain san dòigh àbhaisteach. Ach bidh adhbharan tilleadh ag eadar-obrachadh gus tilleadh chun a neach-gairm, fhad 'sa tha adhbharan eadar- rèite ag eadar-obrachadh gus tilleadh a thoirt dhan neach a tha a' gairm. Mar eisimpleir, ma dh'ainmicheadh ​​"proc foo" eadar-obrachadh agus an uairsin chuir e an gnìomh eadar_return , thill proc foo . (Tha seo a 'ciallachadh ma nì eadar- theangair glainne eadar- ghnìomhach a bhith a' tilleadh clò- bhuail eadar-ghnìomhach air adhbharachadh gum bi an eadar-obrachadh a 'dol air adhart, agus cuiridh eadar- rèiteachadh air an eadar-obrachadh a bhith a' tilleadh chun a neach-gairm.)

eadar-obrachadh , cleachdar modh amh gus am faod na caractaran uile a dhol chun a ' phròiseis làithreach. Mura h-eil am pròiseas làithreach a 'glacadh comharran smachd-obrachaidh, stad e ma thèid comharra stad a chur (gu h-àbhaisteach ^ Z). Gus a thòiseachadh, cuir comharra leantainneach (mar eisimpleir le "kill -CONT"). Ma tha thu airson SIGSTOP a chur a-steach gu pròiseas mar seo (le ^ Z), smaoinich air sìolachadh csh an toiseach agus an uairsin ruith am prògram agad. Air an làimh eile, ma tha thu airson SIGSTOP a chuir a-mach airson a bhith an dùil fhèin, eadar-theangair a 'chiad ghairm (is dòcha le bhith a' cleachdadh caractar teiche), agus an uairsin brùth ^ Z.

Faodar paidhrichean corp-cuingeach a chleachdadh mar gheàrr-ùine airson nach fheum iad a dhol a-steach don eadar-theangair agus a bhith a 'cur an gnìomh òrdan eadar-ghnìomhach. Thathas a 'cleachdadh a' mhodail deiridh roimhe fhad 's a tha corp pàidhir sreang-corp air a chur gu bàs.

Airson astar, bidh gnìomhan a 'dèanamh gnìomh ann am modh amh mar as trice. Cuiridh am bratach- iarainn ath-shuidheachadh air a 'phort-adhair chun a' mhodhail a bh 'aige mus deach e eadar-theangachadh (gu cinnteach, modh bruichte). Thoir fa-near gum faod caractaran a thèid a chur a-steach nuair a thèid am modh atharrachadh (caractar mì-fhortanach air an dràibhear deireannach air cuid de shiostaman). Is e an aon adhbhar a chleachdas tu an lìonra ma tha an gnìomh agad an crochadh air ruith ann am modh bruichte.

Bidh bratach -e a ' cur charactaran a tha a' maidseadh a 'phàtrain a leanas air ais chun a' phròiseas a chruthaich iad oir tha gach caractar air a leughadh. Dh'fhaodadh seo a bhith feumail nuair a dh'fheumas an neach-cleachdaidh fios air ais bho phàtranan a tha air an clàradh gu ìre.

Ma tha pàtran ga chleachdadh ach mu dheireadh thall nach eil e co-ionnan, thèid na caractaran a chur chun phròiseas sìolaichte. Ma bheir am pròiseas sìolachadh an uairsin, bidh an neach-cleachdaidh a 'faicinn nan caractaran dà thuras. -echo ' s dòcha gu bheil e iomchaidh ach ann an suidheachaidhean far nach eil coltas ann nach bi an neach-cleachdaidh a' lìonadh a 'phàtrain. Mar eisimpleir, tha an earrann a leanas bho rftp, an sgriobt ath-fhreagarrach-ftp, far a bheileas ag iarraidh air an neach-cleachdaidh a dhol a-steach gu ~ g, ~ p, no ~ l, a 'faighinn, a chur no a' liostadh an eòlaire làithreach a-rithist. Tha iad cho fada air falbh bho na h-àithnean àbhaisteach ftp, nach eil coltas ann gu bheil an neach-cleachdaidh a 'sgrìobhadh ~ air a leantainn le rud sam bith eile, ach a-mhàin gu mearachdach, sa chùis sin, is dòcha nach toir iad seachad an toradh co-dhiù.

eadar-theangachadh {-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}

Bidh am bratach -nobuffer a ' cur charactaran a tha a' maidseadh a 'phàtrain a leanas chun a' phròiseas toraidh mar a tha caractaran air an leughadh.

Tha seo feumail nuair a tha thu airson leigeil le prògram ath-thogail a dhèanamh air a 'phàtran. Mar eisimpleir, dh'fhaodadh na leanas a bhith air an cleachdadh gus sùil a chumail air far a bheil duine a 'dialadh (modem stoidhle Hayes). Gach uair a chì thu "atd" tha an sgriobt a 'logadh a' chòrr den loidhne.

proc lognumber {} {interact -nobuffer -re "(. *) \ r" till return $ log "[clò-bhualadh [diogan clog]]: dialed $ interact_out (1, sreang)"} eadar-ghnìomhach -nobuffer "atd" lognumber

eadar-obrachadh , thèid an cleachdadh roimhe de log_user a leigeil seachad. Gu h-àraid, cuiridh e eadar-obrachadh an cèill gum bi an toradh aice air a logadh (air a chur chun a 'choilionaidh àbhaisteach) seach gu bheilear a' smaoineachadh nach eil an neach-cleachdaidh airson eadar-obrachadh dall.

Tha am brata -o ag adhbharachadh pàidhrichean iuchair iuchair a leanas a thèid a chur an sàs ann an toradh a ' phròiseis làithreach. Faodaidh seo a bhith feumail, mar eisimpleir, nuair a bhios tu a 'dèiligeadh ri luchd - aoigheachd a chuireas caractaran nach eil ag iarraidh ann an seisean telnet.

Gu h-àbhaisteach, tha eadar-obrachadh an dùil gum bi an neach-cleachdaidh a 'sgrìobhadh stdin agus a' leughadh stdout den phròiseas Expect fhèin. Tha am bratach -u (airson "neach-cleachdaidh") a 'dèanamh sgrùdadh eadar-dhealaichte airson an neach-cleachdaidh mar a' phròiseas air a h-ainmeachadh leis an argamaid aige (a dh'fheumas a bhith na ìomhaigh sìmplidh).

Tha seo a 'leigeil le dà phròiseas gun cheangal a bhith air an ceangal ri chèile gun lùb soilleir a chleachdadh. Gus cuideachadh ann a bhith a 'sguabadh air falbh, Dèan dùil gum bi diagniosgaig an-còmhnaidh a' dol gu stderr (no stdout airson fiosrachadh inntrigidh agus dearbhaidh sònraichte). Airson an aon adhbhar, leughaidh an t- eadar - theangair eadar-ghnìomhach bho stdin.

Mar eisimpleir, tha an criomag a leanas a 'cruthachadh pròiseas logadh-a-steach. An uairsin bidh e a 'làimhseachadh an neach-cleachdaidh (chan eil e air a shealltainn), agus mu dheireadh a' ceangal an dà chèile còmhla. Gu dearbh, faodar pròiseas sam bith a thoirt a-steach airson logadh a-steach. Bheireadh slige, mar eisimpleir, cothrom don neach-cleachdaidh obrachadh gun a bhith a 'toirt seachad cunntas agus facal-faire.

Logadh a-steach airson logadh a-steach sìolaidh $ spawn_id moda a 'sìolachadh modem # cuir a-steach don chleachdaiche # ceangail an neach-cleachdaidh logadh a-steach eadar-lìon -u $ login

Gus toradh a chuir a-steach gu ioma-phròiseasan, liosta gach liosta ID sìola a chaidh a dhearbhadh le bratach- inntrigidh . Faodar cuir a-steach airson buidheann de ids sìolaidh toraidh a bhith air a dhearbhadh le liosta spawn ID ro-làimh le brat--put . (Faodaidh an dà chuid -input agus -output liostaichean a ghabhail san aon fhoirm ris a bheil bratach -i san òrdugh dùil , ach a-mhàin nach eil any_spawn_id ciallach ann an eadar-obrachadh .) Bidh na brataichean agus na strìan a leanas (no pàtranan) a 'buntainn ris an fhiosrachadh seo gu ruige fear eile - sgaoileadh. Mura h-eil coltas ann, tha -output a ' ciallachadh "-input $ user_spawn_id -output". (Mar an ceudna, le pàtrain nach eil- inntrigeadh .) Ma tha aon -input air a shònrachadh, tha e a 'toirt thairis $ user_spawn_id. Ma tha dàrna -inign air a shònrachadh, tha e a 'ruith $ spawn_id. Faodar brataichean co- chuideachd a bhith air an sònrachadh.

Bidh an dà chur-a-steach a tha a 'toirt a-steach bunaiteach gus na toraidhean aca a shònrachadh mar $ spawn_id agus $ user_spawn_id (air an cùlaibh). Ma nochdas bratach- input le bratach gun fhreagairt , thèid caractaran bhon phròiseas sin a leigeil às.

Bidh am bratach -i a ' toirt a-steach an àite spawn_id a tha ann an-dràsta nuair nach eilear a' cleachdadh brataichean- inneal- taisbeanaidh no prìsean eile. Tha bratach -i a 'ciallachadh bratach -o.

Tha e comasach na pròiseasan a tha eadar-obrachadh le bhith a 'cleachdadh ìomhaighean neo-dhìreach neo-dhìreach. (Tha tuairisgeulan neo-dhìreach neo-dhìreach air am mìneachadh anns an earrainn air an òrdugh a dh 'fhaodadh a bhith an dùil.) Faodar ids sìolaidh neo-dhìreach a bhith air an sònrachadh leis na brataichean -i, -u, -input, no -output.

eadar-theangair [args]
a 'ciallachadh gu bheil an neach-cleachdaidh air a bhrosnachadh gu eadar-obrachail airson òrdughan Expect agus Tcl. Tha toradh gach àithne air a chlò-bhualadh.

Bidh gnìomhan leithid briseadh agus cumail a ' toirt adhbharan do structaran smachd (ie, airson , proc ) a ghiùlain san dòigh àbhaisteach. Ach tillidh eadar-theangair adhbharan airson a thilleadh chun a neach-gairm, fhad 'sa tha eadar-mhìneachadh adhbharan eadar-theangair airson a thoirt air ais don neach a tha a' gairm. Mar eisimpleir, ma dh'ainmich "proc foo" eadar-theangair a chuir an gnìomh eadar- aghaidh air adhart , thill proc foo . Bidh ceannas sam bith eile ag adhbhrachadh gun dèan an t- eadar-theangair leantainn air adhart airson òrdughan ùra.

Gu h-àbhaisteach, tha dà shluagh uile anns an fhreagairt. Tha a 'chiad aonad a' toirt tuairisgeul air doimhneachd a 'phrògraim measaidh (ie, cia mheud uair a chaidh Tcl_Eval a ghairm). Is e an dàrna h-aonad an aithnichear eachdraidh Tcl. Faodar an t-iarrtas a shocrachadh le bhith a 'mìneachadh modh-obrach ris an canar "prompt1" le luach air ais mar thoradh air an ath prompt. Ma tha aithris air briathran fosgailte, pàrant, braids no bracaidean, thèid prìomhachas àrd-sgoile (gu h-àbhaisteach "+>") a thoirt seachad air loidhne ùr. Faodar am prògag àrd-sgoile a stèidheachadh le bhith a 'mìneachadh modh-obrach ris an canar "prompt2".

Rè an eadar-theangair , bidh modh bruich air a chleachdadh, eadhon ged a bha an neach a bha a 'gairm a' cleachdadh modh amh.

Ma tha stdin dùinte, tillidh an t- eadar-theangair mura h-eil am brataig air a chleachdadh, agus mar sin thèid an argamaid a leanas a chur an gnìomh.

log_file [args] [[-a] faidhle]
Ma thèid ainm faidhle a thoirt seachad, clàraich log_file tar-sgrìobhadh den t-seisean (a 'tòiseachadh aig an àm sin) san fhaidhle. Leig log_file stad air clàradh mura h-eil argamaid ann. Tha faidhle log sam bith roimhe seo dùinte.

An àite ainm faidhle, faodar neach-aithnichear faidhle Tcl a thoirt seachad le bhith a 'cleachdadh brataichean -open no -leaveopen . Tha seo coltach ris an òrdugh sìolaidh . (Faic sìolachadh airson barrachd fiosrachaidh.)

Tha na toraidhean bratach -a air an logadh a chaidh a chuir fodha leis an òrdugh log_user .

Mar as trice, tha an comharra log_file a ' cur ri seann fhaidhlichean seach a bhith gan trusadh, airson a bhith comasach air tionndadh a dhèanamh dheth agus iomadh uair ann an aon seisean. Gus faidhlichean a bhriseadh, cleachd am flag -noappend .

Tha bratach- nnò ag adhbharachadh log_file gus tuairisgeul a thoirt air ais de na h-argamaidean neo-fiosrachaidh as ùire a chaidh a thoirt seachad.

log_user -info | 0 | 1
Mar as trice, thèid an conaltradh a chuir / a shùileachadh a chlàradh gu stdout (agus log log ma tha e fosgailte). Tha an logadh gu stdout air a chiorramachadh leis an àithne "log_user 0" agus ath-shuidheachadh le "log_user 1". Chan eil atharrachadh sam bith air logadh a-steach don chlàr log.

Tha bratach- nnò ag adhbharachadh log_user gus tuairisgeul a thoirt air ais de na h-argamaidean neo-fiosrachaidh as ùire a chaidh a thoirt seachad.

match_max [-d] [-i spawn_id] [meud]
a 'mìneachadh meud a' bhufair (ann am bytes) a thèid a chleachdadh a-staigh le dùil . Le argamaid meud sam bith, tillidh am meud a th 'ann an-dràsta.

Leis a 'bhratach -d , tha am meud bunaiteach air a shuidheachadh. ('S e 2000. an toiseach bunaiteach) Leis a' bhratach -i , tha am meud air a shuidheachadh airson an ainm spawn ainmichte, no tha e air a shuidheachadh airson a ' phròiseis làithreach.

còmhdach [- # spawn_id] [- # spawn_id] [...] prògram [args]
a 'ruith " args prògram " an àite a' phrògram Expect a th 'ann an-dràsta, a tha a' crìochnachadh. Tha argamaid hyphen lom a 'feuchainn tàthan air beulaibh ainm an àithne mar gum biodh e na shlige logaidh. Tha na spawn_ids uile dùinte ach an fheadhainn air an ainmeachadh mar argamaidean. Tha iad sin air an clàradh air na comharran aithnichear faidhlichean.

Tha Spawn_ids air an clàradh gu aithnichearan faidhle airson a 'phrògraim ùir airson an oighreachd. Mar eisimpleir, bidh an loidhne a leanas a 'ruith tàileasg agus a' leigeil leotha a bhith air a smachdachadh leis a ' phròiseas làithreach - abair, maighstir tàileisg.

còmhdach -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id tàileasg

Tha seo nas èifeachdaiche na "interact -u", ge-tà, bidh e a 'toirt seachad a' chomais eadar-obrachadh a dhèanamh le prògraman bhon nach eil am pròiseas Expect a -nis fo smachd.

Thoir fa-near nach eil ceann-uidhe smachd air a thoirt seachad. Mar sin, ma dh 'fhuasgas tu a-steach gnàthachadh àbhaisteach, bidh prògraman a bhios a' dèanamh smachd air obair (sligean, logadh-inntinn, msaa) ag obrachadh gu ceart.

parity [-d] [-i spawn_id] [luach]
a 'mìneachadh am bu chòir coimeas a bhith air a ghleidheadh ​​no a thoirt às an toradh de phròiseasan sìolaichte. Mas e luach neoni a th 'ann, thèid co-ionannachd a thoirt air falbh, air dhòigh eile chan eil e air a dhubhadh às. Le argamaid luach sam bith, thèid an luach làithreach a thilleadh.

Leis a 'bhratach -d , tha an luach co-ionannachd bunaiteach air a shuidheachadh. (Is e 1 an toiseach a th 'ann an toiseach, is e sin nach eil co-ionannachd air a thoirt às.) Leis a' bhratach -i , tha an luach co-ionannachd air a shuidheachadh airson an ainm spawn ainmichte, no tha e air a shuidheachadh airson a ' phròiseis làithreach.

remove_nulls [-d] [-i spawn_id] [luach]
a 'mìneachadh co dhiubh a thèid nulls a ghleidheadh ​​no a thoirt às an toradh de phròiseasan sìolaichte mus co-fhreagair pàtranan no a bhith a' stòradh anns an atharrachadh expect_out no interact_out . Ma tha luach 1 ann, thèid null a thoirt air falbh. Ma tha luach 0, chan eil nulls air an toirt air falbh. Le argamaid luach sam bith, thèid an luach làithreach a thilleadh.

Leis a 'bhratach -d , tha an luach bunaiteach air a shuidheachadh. ('S e 1 a th' ann an toiseach, is e sin, thèid nulls a thoirt air falbh.) Leis a 'bhratach -i , tha an luach air a shuidheachadh airson an ainm spawn ainmichte, no tha e air a shuidheachadh airson a' phròiseis làithreach.

Co dhiubh a tha nulls air falbh no nach eil, bidh dùil gum bi bytes null air an logadh agus stdout.

cuir sreang [-flags]
Cuir sreang ris a ' phròiseas làithreach. Mar eisimpleir, an àithne

cuir "hello world \ r"

cuiridh na caractaran, helloworld ris a ' phròiseas làithreach. (Tha Tcl a 'toirt a-steach printf -àithne coltach (ris an canar cruth ) a dh'fhaodas a bhith a' togail innealan casg a tha gun teagamh.)

Thèid caractaran a chuir a-mach sa bhad ged nach leig prògraman le in-thasgadh le loidhne air na caractaran a leughadh gus an tèid caractar tilleadh a chuir. Tha caractar toraidh air ainmeachadh mar "\ r".

An - bratach a 'feuchainn ris an ath argamaid a bhith air a mhìneachadh mar shreang seach bratach. Faodar "-" a thoirt seachad air sreang sam bith co dhiubh a tha e coltach gu bheil bratach air. Tha seo a 'toirt seachad inneal earbsach gus sreathan caochlaideach a shònrachadh gun a bhith air an trusadh leis an fheadhainn a tha coltach ri brataichean mar fhiosta. (Tha na loidhnichean uile a 'tòiseachadh le "-" glèidhte airson roghainnean san àm ri teachd.)

Tha am bratach -i a ' dearbhadh gun tèid an sreang a chur chun an spawn_id ainmichte. Ma tha an spawn_id 'na user_spawn_id , agus tha am terminal ann am modh amh, tha loidhnean ùra san t-sreath air an eadar-theangachadh gus sreathan ùra a thilleadh gus am bi iad coltach ris a' phort-uidhe ann am modh bruichte. Tha am bratach a 'càradh an eadar-theangachaidh seo.

Bidh am bratach- lìn a ' cur caractaran null (0 bytes). Gu bunaiteach, thèid aon null a chuir. Dh'fhaodadh sàmh-àireamh a bhith a 'leantainn an -ull gus sealltainn cia mheud null a chuireas tu.

Tha am bratach- brèige a ' cruthachadh suidheachadh briseadh. Chan eil seo a 'dèanamh ciall ma tha an ìomhaigh sìolaidh a' toirt iomradh air inneal tty a chaidh fhosgladh tro "spawn -open". Ma tha thu air pròiseas a spìonadh mar tip, bu chòir dhut cùmhnant a chleachdadh airson briseadh a chruthachadh.

Thèid toraidhean bratach -s a chuir a-mach "gu slaodach", mar sin a 'seachnadh an t-suidheachaidh choitcheann far am faighear toradh coimpiutair bufair ion-chuimseach a chaidh a dhealbhadh airson duine nach dèanadh an aon bufair a-mach a-riamh. Tha an toradh seo fo smachd luach na caochlaideach "send_slow" a tha a 'toirt liosta dà eileamaid. Is e aonad a th 'anns a' chiad eileamaid a tha a 'toirt tuairisgeul air an àireamh de bytes a chuireas gu atamach. Is e an dàrna eileamaid àireamh fìor a tha a 'toirt cunntas air an àireamh de dhiogan leis am feum na cuirmean atamach a bhith air an sgaradh. Mar eisimpleir, cuiridh "send_slow {10 .001}" an gnìomh "cuir -s" gus teinean a chur le 1 millisecon eadar gach 10 caractar a chuir thu.

Tha na toraidhean bratach -h gu bhith air an cur (rudeigin) mar a bhith a 'teacsadh daonna. Tha dàil coltach ri daonna a 'nochdadh eadar na caractaran. (Tha an t-algairim stèidhichte air sgaoileadh Weibull, le atharrachaidhean a rèir an tagraidh shònraichte seo.) Tha an toradh seo fo smachd luach na caochlaideach "send_human" a tha a 'toirt liosta còig eileamaidean. Is e a 'chiad dà eileamaid ùine eadar-àbhaisteach cuibheasach de charactaran ann an diogan. Tha a 'chiad fhear air a chleachdadh gu h-àbhaisteach. Tha an dàrna fear air a chleachdadh aig deireadh de dh 'fhaclan, gus a bhith a' samhlachadh nan seusanan sìmplidh a bhios uaireannan a 'tachairt aig na h-atharrachaidhean sin. Is e an tomhas de dh 'atharrachas a th' anns an treas paramadair far a bheil .1 gu math caochlaideach, tha 1 caochlaideach reusanta, agus tha 10 gu math eadar-dhealaichte. Tha na h-uilltichean 0 gu neo-chrìochnach. Is e an dà pharamatar mu dheireadh, aig an aon àm, an ùine as ìsle agus as àirde. Bidh an ìre as ìsle agus as àirde air an cleachdadh mu dheireadh agus "gearradh" an ùine mu dheireadh. Faodaidh an cuibheasachd as àirde a bhith gu math eadar-dhealaichte bhon chuibheasachd a chaidh a thoirt seachad ma tha na luachan as ìsle agus as àirde de luachan gu leòr.

Mar eisimpleir, bidh an t-òrdugh a leanas a 'toirt a-mach cleachdaiche luath agus cunbhalach:

cuir send_human {.1 .3 1 .05 2} cuir -h "Tha mi acras. Leigamaid leam."

ged a dh'fhaodadh na leanas a bhith nas freagarraiche an dèidh crochadh:

set send_human {.4 .4 .2 .5 100} cuir -h "Oidhche nam pàrtaidh gann"!

Thoir fa-near nach eil mearachdan air an samhlachadh, ged as urrainn dhut suidheachaidhean ceartachadh ceartachadh a dhèanamh ort fhèin le bhith ag àrach mhearachdan agus ceartachaidhean ann an argamaid a chuir thugainn.

Tha na brataichean airson caractaran null a chuir a-steach airson briseadh a chuir air falbh airson toradh slaodach agus airson toradh stoidhle daonna a bhith air leth eisimeileach. Cha tèid ach am fear a chaidh ainmeachadh a-rithist a chleachdadh. A thuilleadh air an sin, chan urrainnear argamaid sreang a bhith air a chomharrachadh leis na brataichean airson caractaran no briseadh null a chur.

Is e deagh bheachd a th 'ann a bhith air thoiseach air a' chiad chur gu pròiseas le dùil . Tha dùil gum bi feitheamh gus am pròiseas tòiseachadh, fhad 's nach urrainn a chuir a- steach . Gu h-àraid, ma thèid a 'chiad chur a- steach mus tòisich am pròiseas , bidh cunnart agad gun tèid an dàta agad a leigeil seachad. Ann an suidheachaidhean far nach eil prògraman eadar-ghnìomhach a 'tairgse tòiseachaidh tòiseachaidh sam bith, faodaidh tu ro làimh dàil a chur thugainn mar a leanas:

# Gus a bhith a 'seachnadh gun toir luchd-smàlaidh ciamar a thèid iad a-steach, chan eil an siostam seo a' cur stad air facal-faire air an taobh a-muigh. # Fuirich airson 5 diogan airson exec gus crìoch a chur air telnet spawn very.secure.gov cadal 5 cuir facal-faire \ r

Tha exp_send na alias airson a chuir thugainn. Ma tha thu a 'cleachdadh Expectk no atharrachadh eile de bhith a' sùileachadh san àrainneachd Tk, cuiridh e air a mhìneachadh le Tk airson adhbhar gu tur eadar-dhealaichte. Tha exp_send air a thoirt seachad airson co-chòrdadh eadar àrainneachdan. Tha alias coltach ri chèile air an solarachadh airson òrdughan eile eile aig Expect.

send_error [-flags] sreang
mar send , ach a-mhàin gu bheil an toradh air a chur gu stderr seach a ' phròiseas làithreach.

send_log [-] sreang
mar a chuir thu , ach a-mhàin nach eil an t-sreath ach air a chur chun faidhle log (faic log_file .) Thèid na h-argamaidean a leigeil seachad mura h-eil faidhle log fosgailte.

send_tty [-flags] sreang
mar send , ach a-mhàin gu bheil an toradh air a chuir gu / dev / tty seach a ' phròiseas làithreach.

send_user [-flags] sreang
mar send , ach a-mhàin gu bheil an toradh air a chuir gu stdout seach a ' phròiseas làithreach.

cadal diogan
a 'ciallachadh gu bheil an sgriobt a' cadal airson an àireamh de dhiogan. Is dòcha gur e na deicheadan àireamh deicheach. Tha buaidhean (agus tachartasan Tk ma tha thu a 'cleachdadh Expectk) air an làimhseachadh fhad' sa tha dùil agad cadal.

prògram sìolaidh [args] [args]
a 'cruthachadh pròiseas ùr a' ruith " args prògram ". Tha an stdin, stdout agus stderr ceangailte ris a bhith an dùil, gus am faod iad a bhith air an leughadh agus air an sgrìobhadh le òrdughan Sùileachadh eile. Tha an ceangal air a bhriseadh gu dlùth no ma tha an pròiseas fhèin a 'dùnadh gin de na comharran faidhlichean.

Nuair a thèid pròiseas a thòiseachadh le bhith a ' sìolachadh , tha an variable spawn_id air a shuidheachadh gu tuairisgeul a' toirt iomradh air a ' phròiseas sin. Thathas den bheachd gur e am pròiseas a tha air a mhìneachadh le spawn_id an " pròiseas làithreach ". Faodaidh spawn_id a bhith air a leughadh no air a sgrìobhadh, gu h-èifeachdach a 'toirt seachad smachd obrach.

Tha user_spawn_id na atharrachadh cruinne anns a bheil tuairisgeul a tha a 'toirt iomradh air an neach-cleachdaidh. Mar eisimpleir, nuair a tha spawn_id air a shuidheachadh ris an luach seo, bi dùil gum bi thu ag obair mar expect_user .

.I e error_spawn_id a tha ann an cruth cruinneil anns a bheil tuairisgeul a tha a 'toirt iomradh air an mearachd àbhaisteach. Mar eisimpleir, nuair a thèid spawn_id a shuidheachadh ris an luach seo, cuir air adhart mar send_error .

Tha tty_spawn_id mar atharrachadh cruinne anns a bheil tuairisgeul a tha a 'toirt iomradh air / dev / tty. Mur eil / dev / tty ann (mar eisimpleir ann an sgrion, aig, no script batch), chan eil tty_spawn_id air a mhìneachadh. Faodar seo a dhearbhadh mar:

ma tha {[info vars tty_spawn_id]} {# / dev / tty exists} eile {# / dev / tty does not exist # probably in cron, bat, or at script}

sìolaidh a 'toirt cunntas air ID pròiseas UNIX. Mura h-eil pròiseas air a spìonadh, thèid 0 a thilleadh. Tha an caochladh spawn_out (tràill, ainm) air a shuidheachadh gu ainm inneal nan tràillean pty.

Gu h-àbhaisteach, seallaidh sealbh air ainm an òrdugh agus argamaidean. Bidh am bratach- nòta a ' stad gu sìtheadh bho bhith a' dèanamh seo.

Tha bratach -console ag adhbharachadh toradh consolach a bhith air ath-stiùireadh chun a ' phròiseas sìolaichte. Chan eil seo a 'faighinn taic air a h-uile siostam.

Gu h-eadar-nàiseanta, cleachd sìol pty, air a thòiseachadh san aon dòigh ri tty an neach-cleachdaidh. Tòisichidh seo a-rithist gus am bi a h-uile suidheachadh "sane" (a rèir stty (1)). Ma tha an caochladh stty_init air a mhìneachadh, tha e air a mhìneachadh ann an stoidhle argamaidean stty mar rèiteachadh eile. Mar eisimpleir, cuiridh "set stty_init raw" adhbharan airson crìochnaichean pròiseasan nas sìolachaidh a thòiseachadh ann am modh amh. -notycopy a ' sgiobadh an tùsachadh stèidhichte air tty an neach-cleachdaidh. -not-a-mach a 'sgiobachadh tùsachadh "sane".

Mar as trice, chan eil sìol a ' toirt mòran ùine gus a dhèanamh. Ma tha thu a 'faireachdainn gu bheil thu a' sìolachadh a 'toirt ùine mhòr, is dòcha gu bheil e a' tachairt ri ptys a tha air an cur ann. Bidh grunn deuchainnean air an ruith air ptys gus casg a chuir air falbh le pròiseasan fuadain. (Bidh iad seo a 'toirt 10 diogan gach pty gearr.) Rith A' sùileachadh leis an roghainn -d a sheallas ma tha dùil gu bheil thu a 'coinneachadh ri mòran ptys ann an stàitean beaga. Mura h-urrainn dhut na pròiseasan a mharbhadh leis a bheil na ptys seo ceangailte, 's dòcha gum bi an ath-chleachdadh agad airson ath-nuadhachadh.

Mura h-urrainn am prògram a ghleidheadh ​​gu soirbheachail leis gu bheil exec (2) a 'fàilligeadh (me nuair nach eil am prògram ann), tillidh an teachdaireachd mearachd leis an ath rud a nì e eadar-theangachadh no a bhith a' sùileachadh an òrdugh mar gum biodh am prògram air ruith agus air a thoirt seachad mar theachdaireachd mearachd. Tha an giùlan seo mar thoradh nàdarra air buileachadh sìola . Gu h-eadar-nàiseanta, gearcan sìolaidh, agus às dèidh sin chan eil dòigh sam bith aig a ' phròiseas sìolaidh gus conaltradh a dhèanamh ris a' phròiseas Sùil thùsail ach le conaltradh tron ​​spawn_id.

Tha bratach -open ag adhbhrachadh gum bi an ath argamaid air a mhìneachadh mar neach-aithnichear faidhle Tcl (ie, air ais le fosgladh .) Faodar an ìomhaigh sìolaidh a chleachdadh an uairsin mar gum biodh e na phròiseas sìolaichte. (Cha bu chòir an neach-aithnichear faidhle a chleachdadh a-rithist.) Tha seo a 'toirt cothrom dhut dèiligeadh ri uidheaman, faidhlichean agus pìoban amh mar phròiseasan sìolaichte gun pty a chleachdadh. 0 air ais gus innse nach eil pròiseas co-cheangailte ann . Nuair a tha an ceangal ris a ' phròiseas sìolaichte dùinte, is e sin an aithnichear faidhle Tcl. Tha am bratach -leaveopen coltach ri -open ach a-mhàin gu bheil -leaveopen ag adhbharachadh gum bi an neach-aithnichear faidhlichean fosgailte fosgailte eadhon às deidh an t-seic sìolaidh a dhùnadh.

Tha am bratach -pty ag adhbhrachadh pty a bhith air fhosgladh ach cha deach pròiseas sam bith a spìonadh. 0 air ais gus innse nach eil pròiseas co-cheangailte ann . Tha Spawn_id air a shuidheachadh mar is àbhaist.

Tha an caochladair spawn_out (tràille, fd) air a shuidheachadh gu neach-aithnichear faidhle a tha a rèir an tràill pty. Faodar a dhùnadh le "close -slave".

Bidh bratach -ignore a ' toirt seachad comharra a thèid a leigeil seachad anns a' phròiseas sìolaichte. Air an làimh eile, gheibh comharran an giùlan bunaiteach. Tha comharran air an ainmeachadh mar a tha san òrdugh cairte , ach a-mhàin gu bheil feum aig gach comharra bratach air leth.

ìre strace
adhbharan a leanas a bhith air an clò-bhualadh mus tèid an cur gu bàs. (Tha caochladh chonaltraidhean Tcl a 'lorg comharran.) Tha ìre a' sealltainn cho fada sìos sa stack gairm gus lorg. Mar eisimpleir, bidh an t-òrdugh a leanas a 'ruith Sùileachadh fhad' sa tha thu a 'lorg nan ceithir ìrean de ghlaraidhean, ach cha bhi gin fo sin.

sùileachadh - script "strace 4"

Tha bratach- nnfo ag adhbhrachadh strace gus tuairisgeul a thoirt air ais de na h-argamaidean neo-fiosrachaidh as ùire a chaidh a thoirt seachad.

sts args
atharrachaidhean modhan teirm coltach ris an òrdugh stty taobh a-muigh.

Mar as trice, ruigear an ceann-uidhe smachdachaidh. Faodar faighinn gu crìochan eile le bhith ag iarraidh "Iarrtasan airson inbhe a thilleadh mar thoradh air an àithne. Ma dh 'iarrasar inbhe sam bith agus ruigear an ceann-uidhe smachdachaidh, thèid inbhe roimhe na buadhan amh agus mac-samhail a thilleadh ann an cruth a ghabhas air an cleachdadh leis an àithne.

Mar eisimpleir, cuiridh na h-argamaidean a tha amh no air a chromadh a 'chrìoch gu modh amh. Na h-argamaidean cuiridh no bruich am terminal gu modh bruichte. Bidh na h-argamaidean ag ath - bheothachadh agus cuir-e an ceann-uidhe gu mac-meanmna agus modh noecho fa leth.

Tha an eisimpleir a leanas a 'sealltainn mar a chuireas tu ath-bheothachadh air falbh bho àm gu àm. Faodar seo a chleachdadh ann an sgriobtaichean eile-fèin-ghluasadach gus casg a chur air faclan-faire annta. (Faic barrachd deasbaid air seo fo na h-earrannan EXPECT gu h-ìosal.)

stty -echo send_user "Facal-faire:" expect_user -re "(. *) \ n" cuir facal-faire stèidhichte $ expect_out (1, sreang) stty echo

args siostam
a 'toirt argamaidean gu sh (1) mar a chaidh a thoirt a-steach, dìreach mar gum biodh e air a sgrìobhadh mar àithne bho cheann-uidhe. Bidh dùil gum bi thu a 'feitheamh gus an tig an slige gu crìch. Tha an t-inbhe tilleadh bho sh air a làimhseachadh san aon dòigh anns a bheil exec a ' làimhseachadh an inbhe thilleadh aige.

An coimeas ri bhith a 'dèanamh ath-stiùireadh stdin agus stdout ris an sgriobt, cha dèan an siostam ath-stiùireadh (ach an fheadhainn a tha an sreang fhèin air an comharrachadh). Mar sin, tha e comasach prògraman a chleachdadh a dh'fheumas bruidhinn gu dìreach ri / dev / tty. Airson an aon adhbhar, chan eil toraidhean an t - siostaim clàraichte sa log.

timampa [args]
a 'tilleadh air clàr-ama. Le argamaidean sam bith, thèid an àireamh de dhiogan bhon àm a thilleadh.

Bidh am bratach- format a ' toirt a-steach sreang a th' air a thilleadh ach le fo-riochdachaidhean air an dèanamh a rèir riaghailtean POSIX airson strftime. Mar eisimpleir thèid ainm giorraichte latha seachdaineach% a chur a h-àite (ie, Sat). Tha feadhainn eile:

% ainm giorraichte latha seachdaine% Ainm làn latha tron ​​t-seachdain% b ainm mìos giorraichte% B ainm làn mìos% c ceann-latha mar a leanas: Wed Oct 6 11:45:56 1993% d latha na mìos (01-31% H uair (00-23)% I uair (01-12)% latha (001-366)% m mìos (01-12)% M mionaid (00-59)% p am no pm% S dàrna (00-61) % u latha (1-7, Diluain a 'chiad latha den t-seachdain)% U seachdain (00-53, a' chiad Didòmhnaich air a 'chiad latha den t-seachdain aon)% V seachdain (01-53, stoidhle ISO 8601)% w day (0- 6)% Seachdain W (00-53, a 'chiad Diluain a' chiad latha den t-seachdain a h-aon)% x àm-latha mar a tha e: Wed Dàmhair 6 1993% X mar a bha e: 23:59:59% na bliadhna (00-99) % Bliadhna mar a bha e ann an: 1993% Zzonezone (no rud sam bith mura h-eil e co-ionnan) %% a-rèir comharra lom

Tha mion-chomharrachaidhean% eile mì-chinnteach. Thèid caractaran eile a thoirt seachad tro neo-ghluasad. Chan eil ach an locale C a 'faighinn taic.

Bidh am bratach -seconds a ' toirt a-steach grunn dhiogan bhon àm a thèid a chleachdadh mar stòr bho bhith a' cruthadh. A dh 'aindeoin sin, tha an t-àm làithreach air a chleachdadh.

Bidh bratach -gmt a ' toirt a-mach às-thìde airson a bhith a' cleachdadh GMT timezone. Le bratach sam bith, thèid an raon-tìde ionadail a chleachdadh.

comharraidhean [[comharra]] gaisgich
ag adhbhrachadh gum bi an t- òrdugh a chaidh a thoirt seachad air a chur gu bàs nuair a gheibhear na comharran a chaidh a thoirt seachad san àm ri teachd. Tha an t-òrdugh air a chur gu bàs ann an raon na cruinne. Ma tha an t-òrdugh às-làthair, thèid an gnìomh comharra a thilleadh. Mas e an t-sreathan an t-sreath SIG_IGN, thèid na comharran a leigeil seachad. Mas e an t-sreathan an t-sreath SIG_DFL, tha na comharran air an toradh mar as àbhaist air an t-siostam. Tha comharran aon chomharran singilte no liosta de chomharran. Faodar comharran a chomharrachadh gu àireamhan no gu samhlachail a rèir gach comharra (3). Faodar ro-leasachan "SIG" fhàgail a-mach.

Le argamaidean sam bith (no an argamaid -an àireamh), tillidh trap àireamh comharra na h-àitneis cairte a tha ga chur an gnìomh an-dràsta.

Bidh bratach -code a ' cleachdadh còd tilleadh an àithne an àite dè an còd a bha air Tcl mu thilleadh nuair a thòisich an t-òrdugh a' ruith.

Tha bratach -interp ag adhbhrachadh measadh air an àithne le bhith a 'cleachdadh an eadar-theangair gnìomhach aig an àm a thòisich an àithne an àite an uair a chaidh an glacadh a ghairm.

Tha am bratach-ainm a 'ciallachadh gu bheil an t-òrdugh gaisgte gus ainm comharra a' chomannd glacaidh a thionndadh an-dràsta a thilleadh.

Tha bratach -max ag adhbhrachadh an t-òrdugh cairte gus an àireamh comharra as motha a ghabhas a shocrachadh a thoirt air ais.

Mar eisimpleir, bidh an t-òrdugh "trap {send_user" Ouch! "} SIGINT" a 'clò-bhualadh "Ouch!" gach uair a bhios an neach-cleachdaidh a 'bruthadh ^ C.

Mar as trice, bidh SIGINT (mar as trice air a chruthachadh le bhith a 'putadh ^ C) agus SIGTERM ag adhbhrachadh Sùileachadh air falbh. Tha seo mar thoradh air a 'chapadh a leanas, a chaidh a chruthachadh gu h-àbhaisteach nuair a thòisicheas Expect.

fàgail air falbh {SIGINT SIGTERM}

Ma chleachdas tu an-bratach gus an neach-dùbhlain a thòiseachadh, thèid SIGINT ath-mhìneachadh gus tòiseachadh air an debugger eadar-ghnìomhach. Tha seo mar thoradh air an t-slighe a leanas:

trap {exp_debug 1} SIGINT

Faodar an caibeal dìonadair atharrachadh le bhith a 'suidheachadh caochladh àrainneachd EXPECT_DEBUG_INIT gu comharra cairte ùr.

Faodaidh tu, mar as trice, a dhol thairis air an dà chuid dìreach le bhith a 'cur òrdughan cairt air do sgriobt. Gu h-àraidh, ma tha an t-slige "SIGINT" agad fhèin agad fhèin, cuiridh seo thairis air a 'chasg dhubh-bhualaidh. Tha seo feumail ma tha thu airson casg a chur air luchd-cleachdaidh a bhith a 'faighinn chun an neach-dìon idir.

Ma tha thu airson an glacadh agad fhèin a shònrachadh air SIGINT ach a dh 'ionnsaigh an neach-dìon nuair a bhios e a' ruith, cleachd:

ma tha {! [exp_debug]} {trap mystuff SIGINT}

Air neo, faodaidh tu grèim a thoirt chun an neach-dìon a 'cleachdadh comharra eile.

Cha leig grèim ort a dhol thairis air a 'ghnìomhachd airson SIGALRM oir tha seo air a chleachdadh gu h-in-làimh airson Sùil. Leigidh an t-òrdugh dì-cheangal SIGALRM gu SIG_IGN (leig seachad an aire). Faodaidh tu seo ath-nuadhachadh cho fad 's as urrainn dhut a dhì-chomasachadh rè na h-òrdughan sìolaidh a leanas.

Faic an comharra (3) airson barrachd fiosrachaidh.

feitheamh [args]
dàil gus an tig crìoch air pròiseas sìolaichte (no am pròiseas làithreach mura h-eil gin dhiubh).

bidh feitheamh mar as trice a 'tilleadh liosta de cheithir aonadan. Is e a 'chiad shluagh a th'anns a' phròiseas a bhathar a 'feitheamh. Is e an dàrna h-aonad an ìomhaigh sìolaidh fhreagarrach. Is e an treas n-aonad -1 ma thachair mearachd air an t-siostam obrachaidh, no 0 eile. Nam b 'e an treas n-aonad 0, is e an ceathramh àireamh-sluaigh an t-inbhe air a thilleadh leis a' phròiseas sìolaichte. Nam b 'e an treas sreathan -1, is e an ceathramh àireamh-sluaigh luach an errno a shuidhich an siostam obrachaidh. Tha an errorCode caochlaideach cruinne air a shuidheachadh cuideachd.

Faodaidh eileamaidean a bharrachd nochdadh aig deireadh an luach tilleadh bho fheitheamh . Tha còigeamh eileamaid roghainneil a 'comharrachadh clas fiosrachaidh. Aig an àm seo, is e CHILDKILLED an aon luach a dh'fhaodadh a bhith ann airson an eileamaid seo, is e an dà luach as ùire an t-ainm comharra stoidhle C agus tuairisgeul goirid.

Tha am bratach -i a ' dearbhadh gu bheil am pròiseas a' feitheamh a tha a 'freagairt ris an spawn_id ainmichte (NACH EIL an pròiseas id). Taobh a-staigh neach-làimhseachaidh SIGCHLD, tha e comasach feitheamh airson pròiseas sam bith a chaidh a spìon le bhith a 'cleachdadh an spawn id -1.

Tha bratach -nowait ag adhbharachadh am feitheamh gus tilleadh gu dìreach leis a 'bheachd gu bheil feitheamh shoirbheachail ann. Nuair a thig am pròiseas a- mach (nas fhaide air adhart), thèid e gu fèin-ghluasadach gun fheum air feitheamh soilleir.

Faodar an comann feitheamh a chleachdadh cuideachd feitheamh airson pròiseas toked le bhith a 'cleachdadh nan argamaidean "-i -1". Eu-coltach ri bhith ga cleachdadh le pròiseasan sìolaidh, faodar an t-òrdugh seo a chur gu bàs aig àm sam bith. Chan eil smachd sam bith air a ' phròiseas dè a' buain. Ach, faodar an luach tilleadh a dhearbhadh airson id pròiseas .

LEABHARLANNAN

Bidh dùil agad gu fèin-obrachail mu dhà leabharlann a chaidh a thogail a-steach airson sgriobtaichean Expect. Tha iad sin air am mìneachadh le na seòlaidhean ainmichte anns na caochlaidhean exp_library agus exp_exec_library. Tha an dà chuid a 'ciallachadh gum bi faidhlichean feumail ann a ghabhas cleachdadh le sgriobtaichean eile.

Tha exp_library ann am faidhlichean neo-eisimeileach ailtireachd. Tha exp_exec_library ann am faidhlichean a tha an urra ri ailtireachd. A rèir an t-siostaim agad, 's dòcha gum bi an dà chlàr gu lèir falamh. Tha am faidhle $ exp_exec_library / cat-buffers a 'mìneachadh a bheil do / bin / cat a' biathadh gu h-àbhaisteach.

A 'CHRIOSDUIDH

Tha mìneachadh fìrinneach ri fhaighinn airson sgriobtaichean beòthail gu leòr-clò-bhuailte. A chionn gu bheil an slatan-tomhais Expect air a shònrachadh gu ceart leis a 'mhìneachadh vgrind a tha air a thoirt seachad, faodaidh tu a chleachdadh mar:

faidhle-sùbailte

EISIMPLEIREAN

Chan eil e gu math follaiseach ciamar a chuireas tu a h-uile càil còmhla ris a bheil duilleag an duine ag innse. Tha mi a 'toirt misneachd dhut na h-eisimpleirean a leughadh agus fheuchainn anns an eòlaire eisimpleir den sgaoileadh Expect . Tha cuid dhiubh fìor phrògraman. Tha feadhainn eile dìreach nan eisimpleirean de dhòighean sònraichte, agus, gu dearbh, tha dà chàraid dìreach dìreach. Tha sealladh farsaing air am faidhle INSTALL air na prògraman sin.

Tha na pàipearan Expect (faic SEE ALSO) feumail cuideachd. Ged a tha cuid de phàipearan a 'cleachdadh co-fhreagairt a fhreagras ri tionndaidhean nas tràithe de Agallamh, tha na cuibhreannan a tha a' tighinn còmhla fhathast dligheach agus a 'dol a-steach gu mòran nas mionaidiche na duilleag an duine seo.

CAVEATS

Dh'fhaodadh leudachadh a bhith a 'co-chòrdadh ri ainmean àithne Expect. Mar eisimpleir, tha cuir a-mach air a mhìneachadh le Tk airson adhbhar gu tur eadar-dhealaichte. Air an adhbhar seo, tha a 'mhòr-chuid de na h-òrdughan' Expect 'rim faighinn mar "exp_XXXX". Chan eil òrdughan agus caochladairean a 'tòiseachadh le "exp", "eadar", "spawn", agus "timeout" aig alias. Cleachd na h-ainmean-stiùiridh leudaichte ma tha feum agad air a 'cho-chòrdachd seo eadar àrainneachdan.

Tha dùil gun toir e sealladh gu math saor-thoileach air farsaingeachd. Gu h-àraidh, thèid atharrachaidhean a thèid a leughadh le òrdughan a tha sònraichte don phrògram Expect a shireadh an toiseach bho raon ionadail, agus mura lorgar iad, ann an raon na cruinne. Mar eisimpleir, tha seo a 'cur an cèill gum feumar "ùine cruinneil" a chur anns gach dòigh sa bheil thu a' sgrìobhadh a tha a 'cleachdadh sin a' sùileachadh . Air an làimh eile, tha caochladairean a chaidh a sgrìobhadh an-còmhnaidh ann an raon ionadail (mura h-eil ceann-latha "cruinne" air a thoirt a-mach). Is e an duilgheadas as cumanta a tha seo a 'tachairt nuair a thèid sìolachadh a chur gu bàs ann am modh-obrach. Taobh a-muigh a 'mhodh-obrachaidh, chan eil spawn_id ann a-nis, agus mar sin chan eil am pròiseas sìolaichte ruigsinneach a-mhàin dìreach air sgòbadh. Cuir "spawn_id cruinneil" ris a leithid de dhòigh-obrach.

Mura h-urrainn dhut comas ioma-fhillte a thoirt seachad (ie, chan eil an siostam agad a 'toirt taic do na taghaidhean (BSD *. *), Bhòtadh (SVR> 2), no rudeigin co-ionann), cha bhi dùil ach ri smachd a chumail air aon phròiseas aig aon àm. Anns a 'chùis seo, na feuch ri spawn_id a shuidheachadh, agus cha bu chòir dhut pròiseasan a dhèanamh tro exec fhad' sa tha pròiseas sìolaichte a 'ruith. A bharrachd air an sin, chan urrainn dhut a bhith an dùil bho iomadh pròiseas (a 'gabhail a-steach an neach-cleachdaidh mar aon) aig an aon àm.

Faodaidh crìochan teirm buaidh mhòr a thoirt air sgriobtaichean. Mar eisimpleir, ma tha sgriobt air a sgrìobhadh gus coimhead air ais, bidh e mì-mhodhail ma thèid ath-bheothachadh dheth. Air an adhbhar seo, tha dùil gum bi crìochan crìochan sàbhailte ann gu bunaiteach. Gu mì-fhortanach, faodaidh seo a bhith mì-thlachdmhor airson prògraman eile. Mar eisimpleir, tha an slige emacs airson na mapaichean "àbhaisteach" atharrachadh: thèid lòchrain ùra a mhapadh gu lòchrain ùra an àite a bhith a 'tilleadh air loidhne ùra, agus tha a' chòmhdach air a chiorramachadh. Leigidh seo le fear a bhith a 'cleachdadh emacs gus an loidhne-ionaid a dheasachadh. Gu mì-fhortanach, chan urrainn dhuinn smaoineachadh gu bheil dùil agad seo.

Faodaidh tu iarraidh nach bi dùil agad a bhith a 'toirt thairis air a shuidheachadh bunaiteach de paramedr crìochnachaidh, ach feumaidh tu a bhith gu math faiceallach nuair a bhios tu a' sgrìobhadh sgriobtaichean airson na h-àrainneachdan sin. Ann an cùis emacs, seachain a-rèir rudan mar ath-bheothachadh agus dealbhadh deireadh-loidhne.

Tha na h-òrdughan a tha a 'gabhail ri argumaidean air an toirt a-steach do aon liosta (a' sùileachadh diofar agus eadar-obrachadh ) a 'cleachdadh heuristic gus co-dhùnadh a bheil an liosta aon argamaid no mòran. Chan fhaod an heuristic a bhith a 'fàilligeadh ach anns a' chùis nuair a bhios an liosta a 'riochdachadh aon argamaid anns a bheil grunnan n \ nnachaidh le caractaran neo-whitespace eatarra. Tha e coltach gu bheil seo mì-choltach gu leòr, ge-tà, faodar an argamaid "-nobrace" a chleachdadh gus aon argamaid a chuir an gnìomh gus a làimhseachadh mar aon argamaid. Dh'fhaodadh seo a bhith air a chleachdadh le còd Expect air a ghineadh le inneal. Mar an ceudna, tha -grace a 'feuchainn ri aon argamaid a bhith air a làimhseachadh mar iomadh pàtran / gnìomh.

BUGS

Bha e gu mòr a 'feuchainn ri ainm "gnè" a chlàradh (airson "Smart EXec" no "Send-Expect"), ach bha deagh mhothachadh (no' s dòcha dìreach Puritanism).

Air cuid de shiostaman, nuair a thèid sligean a spìonadh, tha e a 'gearan nach urrainn dha faighinn chun an tty ach a' ruith co-dhiù. Tha seo a 'ciallachadh gu bheil inneal aig an t-siostam agad airson a bhith a' faighinn an smachd-smachdachaidh nach eil dùil aig dùil . Faigh a-mach dè a th 'ann, agus cuir am fiosrachadh seo air ais thugam.

Tha Ultrix 4.1 (co-dhiù na tionndaidhean as ùire timcheall air an seo) a 'meas gu bheil ùine-obrach os cionn 1000000 gu bhith co-ionann ri 0.

Tha Digital UNIX 4.0A (agus is dòcha dreachan eile) a 'diùltadh ptys a riarachadh ma tha thu a' mìneachadh neach-làimhseachaidh SIGCHLD. Faic an duilleag a thug seachad airson barrachd fiosrachaidh.

Cha bhith IRIX 6.0 a 'làimhseachadh cead pty gu ceart gus ma tha dùil gum feuchaidh e ri pty a chleachdas cuideigin eile a chleachdadh roimhe, tha e a' fàilligeadh. Àrdaich gu IRIX 6.1.

Tha Telnet (air a dhearbhadh dìreach fo SunOS 4.1.2) a 'crochadh mura bheil TERM air a shuidheachadh. Is e duilgheadas a tha seo fo cron, aig agus ann an scrips cgi, nach eil a 'mìneachadh TERM. Mar sin, feumaidh tu a mhìneachadh gu soilleir - ris a 'chumantas nach eil buntainneach. Feumaidh ea bhith air a shuidheachadh gu rudeigin! Is dòcha gu bheil na leanas a dhìth airson a 'mhòr-chuid de chùisean.

sgaoil (TERM) vt100

Gliocas (air a dhearbhadh dìreach fo BSDI BSD / OS 3.1 i386) a 'crochadh mura bheil SHELL agus HOME air an suidheachadh. Tha seo na dhuilgheadas fo cron , aig agus ann an sgriobtaichean cgi , nach eil a 'mìneachadh nan caochlaidhean àrainneachdail sin. Mar sin, feumaidh tu an suidheachadh gu soilleir - a thaobh dè an seòrsa nach eil buntainneach mar as trice. Feumaidh ea bhith air a shuidheachadh gu rudeigin! Is dòcha gu bheil na leanas a dhìth airson a 'mhòr-chuid de chùisean.

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

Tha cuid de bhuileachadh de phtys air an dealbhadh gus am bi an kernel a 'tilgeil air falbh toradh sam bith nach eil air a leughadh às deidh 10 gu 15 diogan (tha an àireamh fìor a' crochadh air gnìomhachadh) an dèidh don phròiseas tuairisgeul nam faidhlichean a dhùnadh. Mar sin, bi prògraman an dùil leithid

s an Ear-Thuath

a 'fàilligeadh. Gus seo a sheachnadh, cuir prògraman neo-ghnìomhach a dh 'ionnsaigh le bhith ag obair an gnìomh seach a bhith a' sìolachadh . Ged a tha suidheachaidhean mar sin buailteach, ann an dòigh nach do thachair mi a-riamh air suidheachadh far an tèid an toradh deireannach de phrògram fìor eadar-ghnìomhach a chall air sgàth an giùlain seo.

Air an làimh eile, tha ptys UNICOS Cray a 'tilgeil air falbh toradh sam bith nach eil air a leughadh dìreach an dèidh dhan phròiseas dùnadh an tuairisgeul fhaidhle. Tha mi air seo a thoirt gu Cray agus tha iad ag obair air suidheachadh.

Uaireannan feumar dàil eadar freagairt agus freagairt, mar nuair a tha eadar-aghaidh tty ag atharrachadh suidheachadh UART no a 'freagairt ìrean baud le bhith a' coimhead airson earrannan tòiseachaidh / stad. Mar as trice, feumaidh seo a bhith a 'cadal airson dàrna no dhà. Is e dòigh nas làidire a bhith a 'dol air adhart gus am bi am bathar-cruaidh deiseil gus faighinn a-steach. Tha an eisimpleir a leanas a 'cleachdadh an dà ro-innleachd:

cuir "astar 9600 \ r"; Tha cadal 1 a 'dùileachadh {timeout {cuir "\ r"; Tha e comasach do roghainnean atharrachadh aig àm sam bith.

Cha bhith trap -code ag obair le òrdugh sam bith a tha a 'suidhe ann an lùb tachartas Tcl, mar cadal. Is e an duilgheadas a th 'ann, nuair a bhios lùb an tachartais, a' dùnadh nan còd tilleadh bho làimhseachadh thachartasan async. Is e suidheachadh a th 'ann bratach a shuidheachadh anns a' chòd ceangail. An uairsin coimhead air a 'bhratach dìreach às deidh an àithne (ie, cadal).

Tha an t-òrdugh expect_background a 'leigeil seachad an aire-argamaidean fad-ùine agus chan eil bun-bheachd sam bith ann de ùine-obrach san fharsaingeachd.

& # 34; LEASACHADH EILEANAN & # 34;

Tha dhà no dhà ann mu bhith a ' sùileachadh a dh'fhaodadh a bhith neo-iongantach. Tha an earrann seo a 'feuchainn ri dèiligeadh ri cuid de na rudan sin le beagan mholaidhean.

Tha e cumanta gu bheil duilgheadas ann mar a dh'aithnicheas tu sligean. Leis gu bheil iad sin air an cleachdadh gu eadar-dhealaichte bho dhaoine eadar-dhealaichte agus sligean eadar-dhealaichte, faodaidh e bhith duilich a bhith a 'dèanamh uidheamachd fèin-ghluasadach gu h-obrachail gun fhios a bhith agad. Is e co-dhùnadh reusanta a bhith ann gum bi luchd-cleachdaidh air a bhith a 'cumail cunntas cunbhalach a' toirt cunntas air na tha iad ag iarraidh (gu h-àraidh, a 'crìoch) ann an caochladh àrainneachd EXPECT_PROMPT. Faodar còd mar na leanas a chleachdadh. Mura h-eil EXPECT_PROMPT ann, tha deagh chothrom fhathast aig a 'chòd obrachadh gu ceart.

stàladh gu sgiobalta "(% | # | \\ $) $"; # gabh iasad bunaiteach {{prompt prompt $ env (EXPECT_PROMPT)} a 'dùileachadh -re $ prompt

Tha mi a 'toirt misneachd dhut sgrìobhadh a bhith a' sùileachadh phàtranan a bhios a 'toirt a-steach deireadh na tha thu a' sùileachadh fhaicinn. Tha seo a 'seachnadh comas a bhith a' freagairt ceist mus faic thu an rud gu lèir. A thuilleadh air an sin, is dòcha gum bi e comasach dhut ceistean a fhreagairt mus fhaicear iad gu tur, ma fhreagras tu tràth, is dòcha gun nochd do fhreagairt air ais ann am meadhan a 'cheist. Ann am faclan eile, bidh an còmhradh a tha a 'tighinn gu buil ceart ach seallaidh e ri chèile.

Am measg nan adhbharan as motha tha caractar fànais aig an deireadh. Mar eisimpleir, 'se f f,' t ',' p ','> 'an t-iarrtas a th' ann bho ftp agus. Gus am freagairt seo a fhreagairt, feumaidh tu cunntas a thoirt airson gach aon de na caractaran sin. Is e mearachd cumanta a th 'ann gun a bhith a' toirt a-steach am bàn. Cuir am bàn gu follaiseach.

Ma chleachdas tu pàtran den fhoirm X *, bidh * a 'maidseadh a h-uile toradh a gheibhear bho dheireadh X gu an rud mu dheireadh a fhuaireadh. Tha seo a 'faireachdainn iongantach ach faodaidh e beagan a bhith mì-chinnteach oir faodaidh an abairt "an rud mu dheireadh a fhuaireadh" atharrachadh a rèir luas a' choimpiutair agus a bhith a 'giullachd I / O an dà chuid leis an inneal agus an dràibhear inneal.

Gu h-àraidh, tha daoine an ìre mhath a 'faicinn toradh a' phrògraim a 'tighinn gu cruachan mòra (atamach) nuair a bhios a' chuid as motha de phrògraman a 'dèanamh toradh aon loidhne aig aon àm. A chionn gur e seo a 'chùis, is dòcha nach eil * ann am pàtran a' pharagraf roimhe ach a 'maidseadh deireadh na loidhne a th' ann an-dràsta ged a tha coltas ann gum bi barrachd, oir aig àm a 'gheama b' e an toradh a fhuair a h-uile càil.

Tha dùil nach eil dòigh sam bith ann a bhith mothachail gu bheil barrachd toraidh a 'tighinn mura bi am pàtran agad a' cunntadh gu sònraichte dha.

Tha fiù 's a-rèir a bhith a' bualadh air an loidhne air a bhith mì-chinnteach. Chan e a-mhàin gu bheil prògraman a 'dèanamh gealltanasan mun t-seòrsa bufair a bhios iad a' dèanamh, ach faodaidh iad a bhith a 'briseadh sìos loidhnichean toraidh gus am bi na loidhnichean a' bristeadh aig àiteachan air thuaiream. Mar sin, ma sheallas tu na caractaran mu dheireadh de chuideam nuair a sgrìobhas tu pàtrain, tha e glic sin a dhèanamh.

Ma tha thu a 'feitheamh ri pàtran ann an toradh mu dheireadh de phrògram agus bidh am prògram a' toirt seachad rudeigin eile an àite, chan urrainn dhut sin a lorg leis an fhacal-fhacal ùine - ama . Is e an t-adhbhar nach bi dùil nach bi ùine ann - an àite sin gheibh e eof . Cleachd sin an àite sin. Fiù 's nas fheàrr, cleachd an dà chuid. Mar sin ma thèid an loidhne sin a ghluasad timcheall, cha leig thu leas an loidhne fhèin a dheasachadh.

Mar as trice bidh Newlines air an tionndadh gu tilleadh carbad, sreathan le feannagan loidhne nuair a thèid an toradh leis an dràibhear deireannach. Mar sin, ma tha thu ag iarraidh pàtran a tha a 'maidseadh an dà loidhne gu soilleir, bho, can, printf ("foo \ nbar"), bu chòir dhut am pàtran "foo \ r \ nbar" a chleachdadh.

Tha eadar-theangachadh mar seo a 'tachairt nuair a tha thu a' leughadh bhon neach-cleachdaidh, tro expect_user . Anns a 'chùis seo, nuair a phutas tu air ais, thèid eadar-theangachadh gu loidhne ùr. Ma tha dùil agad, an uairsin, thèid sin gu prògram a tha a 'suidheachadh a chrìoch gu modh amh (leithid telnet), bidh duilgheadas gu bhith ann, mar a tha am prògram a' sùileachadh fìor thilleadh. (Tha cuid de na prògraman a 'maoidheadh ​​mar gum bi iad a' eadar-theangachadh ùr-nodha gu tilleadh, ach chan eil a 'chuid as motha dhiubh.) Gu mì-fhortanach, chan eil dòigh ann faighinn a-mach gu bheil prògram a' cur a chrìoch gu modh amh.

An àite a bhith a 'cuir an àite làraichean ùra le toradh, is e am fuasgladh an òrdugh "stty raw" a chleachdadh, a chuireas stad air an eadar-theangachadh. Thoir fa-near, ge-tà, gu bheil seo a 'ciallachadh nach faigh thu tuilleadh na feartan deasachadh loidhne.

eadar-theangachadh gu h- obrachail a ' suidheachadh do chrìoch gu modh amh gus nach èirich an duilgheadas seo an uairsin.

Tha e gu math feumail a bhith a 'stòradh faclan-faire (no fiosrachadh prìobhaideach eile) ann an sgriobtaichean Expect . Chan eilear a 'moladh seo bho tha rud sam bith a tha air a stòradh air coimpiutair buailteach gum faigh duine sam bith cothrom air. Mar sin, is e beachd nas fheàrr a tha ann am brosnachadh eadar-ghnìomhach airson faclan-faire bho sgriobt na bhith gan daingneachadh gu litearra. A dh 'aindeoin sin, uaireannan is e sin a bhith a' daingneachadh mar sin an aon chothrom.

Gu mì-fhortanach, chan eil siostam faidhle sam bith aig UNIX air sgriobtaichean a chruthachadh a tha so-ruigsinneach ach nach gabh a leughadh. Faodaidh siostaman a tha a 'toirt taic do sgriobtaichean slige settle a bhith a' samhlachadh gu neo-dhìreach mar a leanas:

Cruthaich an script Expect (anns a bheil am fiosrachadh dìomhair) mar as àbhaist. Dèan na ceadan aige 750 (-rwxr-x ---) agus fo shealbh buidheann earbsach, ie buidheann a tha comasach air a leughadh. Ma tha feum air, cruthaich buidheann ùr airson an adhbhair seo. An ath rud, cruthaich sgriobt / bin / sh le ceadan 2751 (-rwxr-s - x) leis an aon bhuidheann ris an robh e roimhe.

Is e an toradh a tha ann an sgriobt a dh 'fhaodadh neach sam bith a chur gu bàs (agus a leughadh). Nuair a thèid iarraidh ort, bidh e a 'ruith an sgriobt Expect .

& # 34; FARSAICH A-MHÀIN & # 34;

Tcl (3), libexpect (3)
"Exploring Expect: Toolkit Tcl-Based airson Automating Interactive Programs" le Don Libes, td 602, ISBN 1-56592-090-2, O'Reilly and Associates, 1995.
"a 'sùileachadh: a bhith a' gleidheadh ​​na h-innealan eadar-ghnìomhach nach do bhuail" le Don Libes, Cùisean Co-labhairt USENIX an t-Samhraidh 1990, Anaheim, California, Ògmhios 11-15, 1990.
.I "A 'cleachdadh a bhith a' sùileachadh gum bi gnìomhan rianachd siostam fèin-ghluasadach" le Don Libes, Gnothaichean Co-labhairt Rianachd Siostaman Stàlaidh USENIX 1990, Colorado Springs, Colorado, Dàmhair 17-19, 1990.
.I "Tcl: Cànan Comandachaidh Gabhaidh" le John Ousterhout, Gnothaichean Geamhradh 1990 Co-labhairt USENIX, Washington, DC, Faoilleach 22-26, 1990. Tha mi "a 'sùileachadh: Sgriobtran airson Riaghladh Prògraman Eadar-obrachail" le Don Libes, Coimpiutaireachd , Vol. 4, Àir. 2, Taisbeanaidhean Luchd-naidheachd Oilthigh California, Samhain 1991. "Le bhith a 'toirt seachad" Prògraman Eadar-obrachail deuchainn co-chòrdail agus deuchainn coileanaidh ", le Don Libes, Cùisean Co-labhairt USENIX samhraidh 1992, td. 135-144, San Antonio, TX, Ògmhios 12-15, 1992.I "Kibitz - A 'Ceangal Iomairtean Eadar-ghnìomhail Còmhla", le Don Libes, Bathar-bog - Cleachdadh & Eòlas, John Wiley & Sons, West Sussex, Sasainn, Vol.

23, Àir. 5, Cèitean, 1993. "A Debugger for Applications", le Don Libes, Gnothaichean Bùth-obrach Tcl / Tk 1993, Berkeley, CA, 10-11 Ògmhios 1993.

ÙGHDAR

Don Libes, Institiud Nàiseanta Inbhean agus Teicneòlas

BUIDHEACHADH

Taing do John Ousterhout airson Tcl, agus Scott Paisley airson brosnachadh. Taing do Rob Savoye airson còd fèin-rèiteachaidh Expect.

Tha am faidhle HISTORY a 'sgrìobhadh mòran den atharrachadh a tha dùil . Bidh e a 'dèanamh leughadh inntinneach agus dh'fhaodadh e sealladh nas fheàrr a thoirt dhut air a' bhathar-bhog seo. Mòran taing dha na daoine a th 'air an ainmeachadh ann a chuir m' fhiosrachaidhean bìdh orm agus thug mi cuideachadh eile.

Chaidh dealbhadh agus buileachadh an t- sùim a phàigheadh ​​ann an cuid le riaghaltas nan SA agus mar sin tha e san raon phoblaich. Ach bu toil leis an ùghdar agus NIST creideas ma chleachdas am prògram seo agus na sgrìobhainnean no cuid dhiubh.