Očakávať, že je program, ktorý hovorí s inými interaktívnymi programami podľa skriptu. Podľa skriptu očakáva, že očakáva od programu a aká správna odpoveď by mala byť. Tlmočený jazyk poskytuje rozvetvovacie a vysokoúrovňové riadiace štruktúry na usmerňovanie dialógu. Okrem toho môže používateľ prevziať kontrolu a priamo reagovať, keď sa to požaduje, potom vrátiť kontrolu do skriptu.
Expectk je zmes Expect a Tk. Chová sa rovnako ako želanie spoločnosti Expect a Tk. Očakávame, že je možné použiť aj priamo v C alebo C ++ bez Tcl.
Názov "Očakávať" pochádza z myšlienky vysielania / očakávania sekvencií propagovaných programami uucp, kermit a iných modemov. Avšak na rozdiel od uucp, Expect je generalizovaný tak, aby mohol byť spustený ako príkaz na úrovni užívateľa s akýmkoľvek programom a úlohou. Očakávame, že sa môže rozprávať s viacerými programami súčasne.
Čo môžete očakávať
Napríklad tu sú niektoré veci, ktoré očakáva príkaz:
- Pretože počítač vás zavolá späť, aby ste sa mohli prihlásiť bez toho, aby ste platili za hovor.
- Spustite hru a ak sa optimálna konfigurácia nezobrazí, znovu ju znova a znova spustite), až kým sa to nepodarí, a potom ju odovzdajte kontrole.
- Spustite fsck a ako odpoveď na jeho otázky odpovedzte "áno" alebo "nie" alebo dajte kontrolu nad vami na základe vopred určených kritérií.
- Pripojte sa k inej sieti a automaticky si prevezmite svoju poštu tak, aby sa zobrazovala, akoby bola pôvodne odoslaná do vášho miestneho systému.
- Prenášajte premenné prostredia, aktuálny adresár alebo akýkoľvek druh informácií v rlogin, telnet, tip, su alebo chgrp
Existuje celý rad dôvodov, prečo shell nemôže vykonávať tieto úlohy. Všetko je možné s programom Expect.
Všeobecne platí, že program Expect je užitočný pre spustenie ľubovoľného programu, ktorý vyžaduje interakciu medzi programom a používateľom. Všetko, čo je potrebné, je to, že interakciu možno charakterizovať programovo. Očakávame, že môže používateľovi poskytnúť spätnú kontrolu bez zastavenia kontrolovaného programu. Podobne môže používateľ kedykoľvek vrátiť kontrolu do skriptu.
používanie
Očakáva sa, že číta cmcsil pre zoznam príkazov na vykonanie. Očakávať, že implicitne môže byť vyvolaná na systémoch, ktoré podporujú #! zápisom označením skriptu ako spustiteľného a vytvorením prvého riadka v skripte:
#! / usr / local / bin / očakávať -f
Samozrejme, cesta musí presne opísať, kde očakáva život. / usr / local / bin je len príkladom.
Príznak -c predvádza príkaz, ktorý sa má vykonať skôr, než sa v skripte nachádza. Príkaz by mal byť uvedený, aby sa zabránilo rozbitiu shellom. Táto možnosť sa môže použiť niekoľkokrát. Viaceré príkazy môžu byť vykonané s jedným -c oddelením ich bodkočiarkami. Príkazy sa vykonávajú v poradí, v akom sa zobrazujú. Pri použití programu Expectk je táto voľba zadaná ako -command.
Príznak -d umožňuje určitý diagnostický výstup, ktorý predovšetkým vykazuje vnútornú aktivitu príkazov, ako sú očakávania a interakcie. Tento príznak má rovnaký účinok ako "exp_internal 1" na začiatku skriptu Expect a navyše sa vytlačí verzia Expect.
Príznak -D umožňuje interaktívny debugger. Celá hodnota by mala nasledovať. Debugger prevezme kontrolu pred ďalšou procedúrou Tcl, ak je hodnota nenulová, alebo ak je stlačené tlačidlo ^ C alebo sa narazí na bod zlomu alebo sa v skripte zobrazí iný vhodný príkaz debugger. Pri používaní aplikácie Expectk je táto možnosť špecifikovaná ako -Ladenie.
Príznak -f je súbor, z ktorého sa majú čítať príkazy. Samotná vlajka je voliteľná, pretože je užitočná iba pri použití #! zápis, takže ďalšie príkazy môžu byť dodané na príkazovom riadku. Pri použití programu Expectk je táto voľba zadaná ako súbor.
V predvolenom nastavení sa príkazový súbor prečíta do pamäte a vykoná sa v celom rozsahu. Príležitostne je vhodné čítať súbory naraz. Ak chcete vynútiť, aby sa ľubovoľné súbory spracovávali týmto spôsobom, použite príznak -b. Pri použití programu Expectk je táto voľba zadaná ako -buffer.
Ak je reťazec "-" dodaný ako názov súboru, namiesto toho sa načíta štandardný vstup. Použite "./-" na čítanie zo súboru skutočne nazvaného "-".
Znak príznaku -i očakáva interakčné výzvy na zadanie príkazov namiesto ich čítania zo súboru. Výzva sa ukončí pomocou príkazu exit alebo EOF. Príznak -i sa predpokladá, ak sa nepoužije ani príkazový súbor ani -c. Pri použití programu Expectk je táto možnosť špecifikovaná ako -interakčná.
- možno použiť na vymedzenie konca možností. To je užitočné, ak chcete skriptovi skopírovať argument vo forme voľby bez toho, aby bol interpretovaný programom Expect. To môže byť užitočne umiestnené v #! line, aby sa zabránilo interpretácii Expect. Napríklad nasledujúca položka opustí pôvodné argumenty vrátane názvu skriptu v premennej argv .
#! / usr / local / bin / očakávať -
Všimnite si, že obvyklé getopt (3) a execve (2) konvencie musia byť dodržané pri pridávaní argumentov k #! linka.
Súbor $ exp_library / expect.rc sa automaticky získava, ak je k dispozícii, ak sa nepoužíva príznak -N. (Pri použití programu Expectk je táto voľba zadaná ako -NORC.) Bezprostredne po tomto sa súbor ~ / .expect.rc získava automaticky, pokiaľ sa nepoužíva príznak -n. Ak je definovaná premenná prostredia DOTDIR, považuje sa to za adresár a odtiaľ sa číta .expect.rc. Pri použití programu Expectk je táto voľba zadaná ako -norc.Tento zdroj sa vyskytuje až po vykonaní akýchkoľvek príznakov -c.
-v spôsobí očakávania, že vytlačí číslo verzie a skončí. Príslušná vlajka v programe Expectk, ktorá používa dlhé názvy vlajok, je -version.
Voliteľné args sú zostavené do zoznamu a uložené v premennej s názvom argv a. argc sa inicializuje na dĺžku argv.
Argv0 je definovaný ako názov skriptu alebo binárneho súboru, ak nie je použitý žiadny skript. Napríklad nasledujúci vypisuje názov skriptu a prvé tri argumenty:
send_user "$ argv0 lang $ argv 0 2 n"
príkazy
Očakávame, že používa nástroj Command Language. Tcl poskytuje riadiaci tok (ak sa prelomí), hodnotenie výrazov a niekoľko ďalších funkcií, ako je rekurzia a definícia procedúry. Príkazy, ktoré sa tu používajú, ale nie sú definované (nastaviť, ak, exec) sú príkazy Tcl. Očakáva sa, že budú podporované ďalšie príkazy. Pokiaľ nie je uvedené inak, príkazy vrátia prázdny reťazec.
Príkazy sú uvedené v abecednom poradí, aby mohli byť rýchlo umiestnené. Avšak noví používatelia môžu ľahšie začať tým, že čítajú opisy spúšťania, odosielania, očakávania a interakcie v tomto poradí.
zavrieť -slave -onexec 0 | 1 -i spawn_id
ukončí spojenie s aktuálnym procesom. Väčšina interaktívnych programov bude odhaľovať EOF na ich stdin a výstup; teda Zavrieť zvyčajne postačuje zabiť aj proces. Príznak -i deklaruje proces uzatvorenia zodpovedajúci pomenovanému spawn_id.
Oba očakávajú a budú spolupracovať rozpoznajú, keď sa skončí súčasný proces a implicitne skončí, ale ak zabijete proces povedzme "exec zabiť $ pid", musíte explicitne zavolať.
Značka -onexec určuje, či je id plodu uzatvorené v akomkoľvek novom spustenom procese alebo ak je proces prekrytý. Ak necháte otvorené číslo idúceho trávenia, použite hodnotu 0. Nenulová celočíselná hodnota núti uzol uzavrieť v akýchkoľvek nových procesoch.
Príznak typu -slave uzatvára podriadenú identifikačnú identitu. Keď je spojenie zatvorené, podriadené zariadenie sa automaticky zatvorí aj vtedy, keď je otvorené.
Bez ohľadu na to, či je spojenie implicitne alebo explicitne zatvorené, mali by ste zavolať počkať, aby ste vyčistili príslušný slot pre procesné jadro. Zavrieť príkaz nezačne čakať, pretože neexistuje žiadna záruka, že zatvorenie procesného spojenia spôsobí jeho ukončenie.
ladenie -now 0 | 1
kontroluje debugger Tcl, ktorý umožňuje prechádzať výkazmi a nastaviť body prerušenia.
Bez argumentov sa vráti 1, ak ladiaci program nie je spustený, inak sa vráti 0.
S argumentom 1 je spustený debugger. S argumentom 0 je ladiaci program zastavený. Ak predbehne argument 1 -now, ladiaci program sa okamžite spustí. V opačnom prípade sa ladiaci program spustí s ďalším príkazom Tcl.
Príkaz ladenia nezmení žiadne pasce. Porovnajte to so začiatkom Predstavte si s príznakom -D.
Príkaz odpojenia odpojí zdieľaný proces z terminálu. Na pozadí pokračuje. Proces má svoju vlastnú procesnú skupinu. Štandardný vstup / výstup je presmerovaný na / dev / null.
Nasledujúci fragment používa odpojenie a pokračuje v spúšťaní skriptu na pozadí.
ak {{fork! = 0} odpojte ukončenie. , ,
Nasledujúci skript číta heslo a potom spustí program každú hodinu, ktorá vyžaduje heslo pri každom spustení. Skript dodáva heslo tak, že ho musíte iba raz napísať.
send_user "heslo? " expect_user -re "(. *) n" pre {} 1 {} {if {fork! = 0} {sleep 3600; 1, reťazec) r ". , , východ }
Výhodou používania odpojenia cez funkciu asynchrónneho procesu (&) je to, že program Expect môže uložiť parametre terminálu pred odpojením a neskôr ich použiť na nové pty. Pri &, Expect nemá možnosť čítať parametre terminálu, pretože terminál je už odpojený v čase, keď program Expect získa kontrolu.
exit -opts stav
Príčiny očakávajú, že k tomu opustíte alebo sa inak pripravíte.
-onexit flag spôsobí, že nasledujúci argument sa použije ako výstupný handler. Bez argumentu sa vráti aktuálny popisovač výstupu.
-žiadny východ flag príčiny očakávať pripraviť sa na opustenie, ale prestať v skutočnosti vrátiť kontrolu do operačného systému. Používateľom definovaný popisovač výstupu je spustený rovnako ako vlastné interné obslužné programy spoločnosti Expect. Žiadne ďalšie príkazy očakávania by sa nemali vykonať. To je užitočné, ak používate Expect s inými rozšíreniami Tcl. Aktuálny tlmočník (a hlavné okno v prostredí Tk) ostáva tak, aby ostatné rozšírenia Tcl mohli vyčistiť. Ak je Expect's východ (aj keď sa to môže vyskytnúť), obsluha sa nespustí znova.
Po ukončení sú všetky pripojenia k plodným procesom zatvorené. Uzávierka bude odhalená ako EOF spôsobenými procesmi. východ nepodniká žiadne iné kroky, ako je to, čo robí bežný postup _exit (2). Preto môžu naštartované procesy, ktoré nekontrolujú EOF. (Rôzne podmienky sú dôležité pre určenie napríklad toho, aké signály budú odoslané procesy odoslané, ale tieto sú závislé od systému, zvyčajne sa zdokumentujú pod výstupom (3).) Spracované procesy, ktoré budú naďalej bežať, budú zdedené initom.
postavenie (alebo 0, ak nie je špecifikované) sa vráti ako stav výstupu očakávať . východ sa implicitne vykoná, ak sa dosiahne koniec skriptu.
exp_continue -continue_timer
Príkaz exp_continue umožňuje očakávať aby pokračovala vo vykonávaní namiesto toho, aby sa vracala, ako by to bolo normálne. Predvolene exp_continue obnoví časovač časového limitu. -continue_timer flag zabraňuje reštartu časovača. (Pozri očakávať Pre viac informácií.)
exp_internal -f súbor hodnota
spôsobuje ďalšie príkazy na odoslanie interných diagnostických informácií očakávať ak stderr hodnota je nenulová. Tento výstup je vypnutý, ak hodnota je 0. Diagnostické informácie zahŕňajú každý prijatý znak a každý pokus o prispôsobenie aktuálneho výstupu vzorom.
Ak je to voliteľné súbor je dodávaný všetok normálny a debugovací výstup do tohto súboru (bez ohľadu na hodnotu hodnota ). Akýkoľvek predchádzajúci diagnostický výstupný súbor je zatvorený.
-Info príznak flag exp_internal vráti opis najnovších nedoručených argumentov.
exp_open args -i spawn_id
vracia identifikátor súboru Tcl, ktorý zodpovedá pôvodnému identifikátoru. Identifikátor súboru sa potom môže použiť, akoby ho otvorili Tcl otvorené Príkaz. (Identifikátor tresky sa už nesmie používať počkať by sa nemali vykonávať.
-leaveopen vlajka opustí prístupové číslo id prístupu prostredníctvom príkazov očakávania. počkať musí byť vykonané na identite tŕstia.
exp_pid -i spawn_id
vracia ID procesu zodpovedajúce aktuálne plodu procesu. Ak -i vlajka sa používa, vrátená pid zodpovedá hodnote daného ID tŕstia.
exp_send
je alias pre odoslať .
exp_send_error
je alias pre send_error .
exp_send_log
je alias pre send_log .
exp_send_tty
je alias pre send_tty .
exp_send_user
je alias pre send_user .
exp_version -exit verzia
je užitočná na to, aby bol skript kompatibilný s aktuálnou verziou programu Expect.
Bez argumentov, aktuálna verzia očakávať je vrátená. Táto verzia môže byť potom zakódovaná vo vašom skripte. Ak skutočne viete, že nepoužívate funkcie nedávnych verzií, môžete zadať skoršiu verziu.
Verzie sa skladajú z troch čísel oddelených bodkami. Prvé je hlavné číslo. Skripty napísané pre verzie očakávať s iným veľkým počtom bude takmer určite nefunguje. exp_version vráti chybu, ak sa hlavné čísla nezhodujú.
Druhým je menšie číslo. Skripty napísané pre verziu s väčším menším číslom ako aktuálna verzia môžu závisieť od novej funkcie a nemusia sa spúšťať. exp_version vracia chybu, ak sa zhodujú hlavné čísla, ale menšie číslo skriptu je väčšie ako bežné číslo očakávať .
Tretia je číslo, ktoré nezohráva žiadnu úlohu pri porovnaní verzií. Avšak, je zvýšená, keď očakávať distribúcia softvéru sa mení akýmkoľvek spôsobom, napríklad dodatočnou dokumentáciou alebo optimalizáciou. Pri každej novej menšej verzii sa vynuluje na 0.
S -východ vlajka, očakávať vytlačí chybu a skončí, ak je verzia zastaraná.
očakávať -opts pat1 body1 … -opts patn bodyn
čaká, kým sa niektorý zo vzorov nezhoduje s výstupom procesu, ktorý sa plodil, uplynul špecifikovaný časový interval alebo sa zobrazí koniec súboru. Ak je konečné telo prázdne, môže sa vynechať.
Vzory z najnovších expect_before príkaz sa implicitne používajú pred akýmikoľvek inými vzormi. Vzory z najnovších expect_after príkaz sa implicitne používajú po akýchkoľvek iných vzorkách.
Ak sú argumenty k celku očakávať vyhlásenie vyžaduje viac ako jeden riadok, všetky argumenty môžu byť "zarovnané" do jedného, aby sa zabránilo ukončeniu každého riadku spätným lomítkom. V tomto jednom prípade sa zvyčajné substitúcie Tcl vyskytnú napriek zátvorkám.
Ak je vzorom kľúčové slovo eof , príslušné telo sa vykoná na konci súboru. Ak je vzorom kľúčové slovo čas vypršal , príslušné telo sa vykoná po uplynutí časového limitu. Ak sa nepoužije žiadne kľúčové slovo časového limitu, po uplynutí časového limitu sa vykoná implicitná nulová akcia. Predvolené časové obmedzenie je 10 sekúnd, ale môže byť nastavené, napríklad na 30, príkazom "set timeout 30". Nekonečný časový limit môže byť označený hodnotou -1. Ak je vzorom kľúčové slovo štandardné , príslušné telo sa vykoná buď po uplynutí časového limitu alebo od konca súboru.
Ak sa vzorka zhoduje, vykoná sa príslušné telo. očakávať vracia výsledok tela (alebo prázdny reťazec, ak sa nezhoduje so vzorom). V prípade, že sa viac vzorov zhoduje, ten, ktorý sa objaví ako prvý, sa používa na výber trupu.
Pri každom príchode nového výstupu sa porovnáva s každým vzorom v poradí, v akom sú uvedené. Preto môžete otestovať neprítomnosť zápasu tým, že sa poslednému vzoru vytvorí niečo, čo by sa zaručilo, že sa objaví, napríklad výzva. V situáciách, kde nie je výzva, musíte použiť čas vypršal (rovnako ako by ste robili, keby ste interagovali manuálne).
Vzory sú špecifikované tromi spôsobmi. Štandardne sú vzory uvedené ako pri Tcl string match Príkaz. (Takéto vzory sú tiež podobné normálnym výrazom C-shell, ktoré sa zvyčajne označujú ako "globálne" vzory). -gl môže byť použitý na ochranu vzorov, ktoré by sa inak mohli zhodovať očakávať vlajkami. Každý vzor začínajúci znakom "-" by mal byť chránený týmto spôsobom. (Všetky reťazce začínajúce "-" sú vyhradené pre budúce možnosti.)
Napríklad nasledujúci fragment hľadá úspešné prihlásenie. (Poznač si to prerušiť sa predpokladá, že je postup definovaný inde v skripte.)
očakávať {busy {puts busy n; exp_continue} sa nepodarilo zrušiť "neplatné heslo" abort timeout abort connected}
Citácie sú potrebné na štvrtom vzore, pretože obsahuje medzeru, ktorá by inak oddelila vzor od akcie.Vzory s rovnakou akciou (napríklad tretí a štvrtý) vyžadujú znova zobrazenie akcií. To sa dá vyhnúť používaním regexpových štýlov (pozri nižšie). Viac informácií o vytváraní vzorov v štýle globálneho svetla nájdete v príručke Tcl.
Štýly typu Regexp sledujú syntax definovaný Tcl regexp (skratka pre "regulárny výraz") príkaz. regexp vzory sú zavedené s vlajkou -R , Predchádzajúci príklad možno prepísať pomocou regexp ako:
očakávať {busy {puts busy n; exp_continue} -re "neúspešne | neplatné heslo" abort timeout abort connected}
Obidva typy vzorov sú "nezasadené". To znamená, že vzory nemusia zodpovedať celému reťazcu, ale môžu začať a ukončovať zápas kdekoľvek v reťazci (pokiaľ sa všetko zhoduje). Použite ^, aby ste zodpovedali začiatku reťazca a $ sa zhodujú s koncom. Všimnite si, že ak nečakávate na koniec reťazca, vaše odpovede môžu ľahko skončiť uprostred reťazca, ako sa odrážajú od procesu plodu. Zatiaľ čo stále produkujú správne výsledky, výstup môže vyzerať neprirodzene. Preto používanie $ je odporúčané, ak môžete presne popísať znaky na konci reťazca.
Všimnite si, že v mnohých editorech, ^ a $ zodpovedajú začiatku a koniec riadkov. Avšak, pretože očakávate, že nie je line orientovaný, tieto znaky sa zhodujú so začiatkom a koncom údajov (na rozdiel od riadkov), ktoré sú v očakávanom vyrovnávacom buffere. (Pozri tiež poznámku nižšie o "systémovej trávení.")
-EX flag spôsobí, že vzor sa má zhodovať s "presným" reťazcom. Nevytvára sa žiadna interpretácia *, ^, atď. (Aj napriek tomu sa musia dodržať obvyklé konvencie Tcl). Presné vzory sú vždy neopracované.
-nocase flag spôsobí, že veľké znaky výstupu sa porovnávajú, akoby boli malé písmená. Vzor nie je ovplyvnený.
Pri čítaní výstupu môže viac ako 2000 bajtov vynútiť predchádzajúce bajty, aby boli "zabudnuté". Táto funkcia sa môže zmeniť match_max , (Všimnite si, že príliš veľké hodnoty môžu spomaliť vzorkovanie.) Ak patlist je full_buffer , zodpovedajúce telo sa vykoná, ak match_max bajtov boli prijaté a žiadne iné vzory sa nezhodovali. Či je alebo nie full_buffer kľúčové slovo sa používa, zabudnuté znaky sú zapísané do očakávania_out (vyrovnávacej pamäte).
ak patlist je kľúčové slovo nulový , a nulové sú povolené (prostredníctvom remove_nulls príkaz), zodpovedajúce telo sa vykoná, ak je zhodná jedna ASCII 0. Nie je možné priradiť 0 bajtov cez globálne alebo regexp vzory.
Po priradení vzoru (alebo eof alebo full_buffer) sa v premennej uloží akýkoľvek zodpovedajúci a predtým bezkonkurenčný výstup expect_out (pufer) , Do premenných sa uloží až 9 regexpových podsekcií expect_out (1 string) skrz expect_out (9, string) , Ak -indices pred vzorom sa použije príznak, index začínajúci a končiaci (vo forme vhodnej pre lrange ) z 10 reťazcov sa ukladajú do premenných expect_out (X jazyku) a expect_out (X, koniec) kde X je číslica, zodpovedá pozícii podreťazcov v vyrovnávacej pamäti. 0 označuje reťazce, ktoré zodpovedajú celému vzoru a sú generované pre globálne vzory, ako aj vzory regexp. Ak napríklad proces priniesol výstup "abcdefgh n", výsledok:
očakávať "cd"
je ako keby nasledovné vyhlásenia vykonali:
nastaviť expect_out (0, reťazec) cd nastaviť expect_out (buffer) abcd
a "efgh n" zostáva vo vyrovnávacej pamäti výstupu. Ak proces vytvorí výstup "abbbcabkkkka n", výsledok:
očakávať -indices -re "b (b *). * (k +)"
je ako keby nasledovné vyhlásenia vykonali:
nastaviť očakávania_vyt (1, koniec) 1 set expect_out (0, koniec) 1 set expect_out (0, koniec) 10 set expect_out (0, string) bbbcabkkkk set expect_out (2, štart) 10 nastaviť expect_out (2, koniec) 10 set expect_out (2, string) k nastaviť očakávania (buffer) abbbcabkkkk
a "a n" zostáva vo vyrovnávacej pamäti výstupu. Vzor "*" (a -re ". *") Preplaví výstupnú vyrovnávaciu pamäť bez toho, aby čítal viac výstupov z procesu.
Za normálnych okolností je porovnaný výstup vyradený z interných vyrovnávacích pamätí programu Expect. To sa dá predísť predpoveďou vzoru s -notransfer flag. Tento príznak je obzvlášť užitočný pri experimentovaní (a môže byť skrátený "-not" pre pohodlie počas experimentovania).
Identifikátor plodu priradený k zodpovedajúcemu výstupu (alebo eof alebo full_buffer) je uložený v expect_out (spawn_id) .
-čas vypršal príznak príkazu prúdu očakáva, že použije nasledujúcu hodnotu ako časový limit namiesto použitia hodnoty premennej časového limitu.
Štandardne sú vzory porovnané s výstupom z aktuálneho procesu, avšak -i flag vyhlasuje, že výstup z pomenovaného zoznamu spawn_id sa porovná s nasledujúcimi vzormi (až do nasledujúceho -i ). Zoznam služby spawn_id by mal byť buď listom spawn_ids alebo premennou odkazujúcou na takýto zoznam položiek spawn_ids.
Napríklad nasledujúci príklad čaká na "pripojenie" z aktuálneho procesu, alebo "zaneprázdnený", "neúspešný" alebo "neplatné heslo" zo servera spawn_id pomenovaného $ proc2.
očakávať, že {-i $ proc2 obsadený {puts busy n; exp_continue} -re "neúspešne | neplatné heslo" abort timeout abort connected}
Hodnota globálnej premennej any_spawn_id môžu byť použité na to, aby zodpovedali vzory akýmkoľvek spawn_ids, ktoré sú pomenované so všetkými ostatnými -i príznaky v prúde očakávať Príkaz. Spawn_id z a -i vlajka bez združeného vzoru (tzn. bezprostredne nasleduje iný -i ) je k dispozícii pre všetky ostatné vzory v rovnakom očakávať príkaz spojený s any_spawn_id.
-i môže tiež označiť globálnu premennú, v takom prípade sa premenná číta pre zoznam identifikátorov spawn. Premenná sa znova prečíta, kedykoľvek sa zmení. Toto poskytuje spôsob zmeny zdroja I / O počas vykonávania príkazu. Kultúrne ids pochádzajúce z tohto režimu sa nazývajú "nepriame" identifikačné znaky.
Akcie ako napr prestávka a ďalej spôsobujú riadiace štruktúry (t.j., pre , proc ) správať sa obvyklým spôsobom. Príkaz exp_continue umožňuje očakávať aby pokračovala vo vykonávaní namiesto toho, aby sa vracala, ako by to bolo normálne.
To je užitočné pre vylúčenie explicitných slučiek alebo opakovaných očakávaných vyhlásení. Nasledujúci príklad je súčasťou fragmentu na automatizáciu rloginu. exp_continue vyhýba sa písaniu druhej očakávať (opätovné vyhľadanie výzvy), ak rlogin zobrazí výzvu na zadanie hesla.
očakávame {password: {stty -echo send_user "pre $ user) na $ host:" expect_user -re "(. *) n" send_user " n" send "$ expect_out echo exp_continue} nesprávne {send_user "neplatné heslo alebo účet n" ukončenie} časový limit {send_user "pripojenie k hostiteľovi $ timed out n" exit} eof {send_user prompt $ prompt}
Napríklad nasledujúci fragment môže pomôcť používateľovi viesť interakciu, ktorá je už úplne automatizovaná. V tomto prípade sa terminál prepne do režimu "raw". Ak používateľ stlačí "+", zvýši sa premenná. Ak stlačíte tlačidlo "p", do procesu sa odošlú niekoľko návratov, možno nejakým spôsobom, a "i" umožňuje používateľovi komunikovať s procesom a účinne odcudziť kontrolu nad skriptom. V každom prípade sa exp_continue umožňuje prúd očakávať pokračovať v zosúladení vzoru po vykonaní aktuálnej akcie.
stty raw -exo očakávame_after {-i $ user_spawn_id "p" {odoslať " r r r"; exp_continue} "+" {incr foo; exp_continue} "i" {interact; exp_continue} "ukončiť" ukončenie}
Predvolene, exp_continue obnoví časovač časového limitu. Časovač sa neštartuje, ak exp_continue sa volá s -continue_timer flag.
očakávať po očakávania
pracuje rovnako ako expect_before s výnimkou toho, že vzory z obidvoch očakávať a expect_after môže zodpovedať, očakávať vzor sa používa. Pozrite si expect_before príkaz pre viac informácií.
expect_background expect_args
má rovnaké argumenty akoočakávať , ale okamžite sa vráti. Vzory sa testujú vždy, keď príde nový vstup. Vzorčas vypršal aštandardné sú bezvýznamnéexpect_background a sú ticho zlikvidované. V opačnom prípadeexpect_background príkazy používaexpect_before aexpect_after vzory rovnako akoočakávať robí.
Kedyexpect_background akcie sa vyhodnocujú, spracovanie pozadia pre tú istú ID tresky je zablokované. Spracovanie pozadia sa odblokuje po dokončení akcie. Keď je spracovanie na pozadí zablokované, je možné vykonať (popredí)očakávať na rovnakom idúcej ploche.
Nie je možné vykonaťočakávať zatiaľ čoexpect_background je odblokovaný.expect_background pre konkrétne ID tŕstia sa vymaže vyhlásením nového očakávania_oblasti s rovnakým identifikátorom tresky. deklarovaťexpect_background bez šablóny odstráni daný identifikátor plodnosti od schopnosti porovnávať vzory v pozadí.
očakávať pred očakávania
má rovnaké argumenty akoočakávať , ale okamžite sa vráti. Pattern-action dvojice od najnovšíchexpect_before s rovnakým idúcim indexom sa implicitne pridávajú k ľubovoľnému nasledujúcemuočakávať príkazy. Ak sa vzor zhoduje, považuje sa to, akoby to bolo špecifikované vočakávať príkaz sám, a pridružené telo sa vykoná v kontexteočakávať Príkaz. Ak vzory z obochexpect_before aočakávať môže zodpovedať,expect_before vzor sa používa.
Ak nie je špecifikovaný žiaden vzor, identifikátor tresky sa nekontroluje pre žiadne vzory.
Ak nie je prepísaný a-i vlajka,expect_before vzory sa zhodujú s identifikačným indexom definovaným v čase, keď saexpect_before príkaz bol vykonaný (nie keď je jeho vzorec zhodný).
Príčinu príznaku -infoexpect_before vrátiť aktuálne špecifikácie toho, aké vzory sa budú zhodovať. V predvolenom nastavení sa hlásia o aktuálnom idúte. Na informáciu o idúte idúceho znaku sa môže uviesť nepovinná špecifikácia id. Napríklad
očakávať pred -info -i $ proc
Môžeme uviesť maximálne jednu špecifikáciu id. Vlajka -indirect potláča priame idúce splodiny, ktoré pochádzajú len z nepriamych špecifikácií.
Namiesto špecifikácie idúceho symbolu, príznak "-all" spôsobí "-info" hlásenie všetkých idúcich prvkov.
Výstup príznaku -info sa môže opätovne použiť ako argument, ktorý očakávate predtým.
expect_tty expect_args
je akoočakávať ale číta znaky z / dev / tty (tj údery od užívateľa). Štandardne sa čítanie uskutočňuje v režime varenia. Takže linky musia skončiť s návratomočakávať vidieť ich. Môže sa to zmeniťstty (viďstty príkaz nižšie).
expect_user expect_args
je akoočakávať ale číta znaky zo stdin (t. j. údery od užívateľa). Štandardne sa čítanie uskutočňuje v režime varenia. Takže linky musia skončiť s návratomočakávať vidieť ich.Môže sa to zmeniťstty (viďstty príkaz nižšie).
vidlička
vytvára nový proces. Nový proces je presnou kópiou prúduočakávať proces. Pokiaľ ide o úspech,vidlička vracia 0 do nového (podriadeného) procesu a vráti ID procesu podradeného procesu do rodičovského procesu. Pri zlyhaní (z dôvodu nedostatku zdrojov, napr. Swapového priestoru, pamäte)vidlička vráti -1 do rodičovského procesu a nie je vytvorený žiadny podriadený proces.
Vypínané procesy opúšťajú reťazecvýchod príkaz, rovnako ako pôvodný proces. Na záznamové súbory sa môžu zapisovať napaľované procesy. Ak nevypnete ladenie alebo prihlásenie vo väčšine procesov, výsledok môže byť mätúci.
Niektoré pty implementácie môžu byť zmätené viacerými čitateľmi a spisovateľmi, a to aj na chvíľu. Tak je to najbezpečnejšievidlička pred procesmi rozmnožovania.
interagovať string1 body1 … stringn bodyn
dáva kontrolu nad aktuálnym procesom pre používateľa, takže sú stlačené klávesy do aktuálneho procesu a vrátia sa stdout a stderr aktuálneho procesu.
Páry reťazcov a telies môžu byť špecifikované ako argumenty, v takom prípade sa telo vykoná pri zadaní príslušného reťazca. (Štandardne reťazec nie je odoslaný do aktuálneho procesu.)tlmočník príkaz sa predpokladá, ak chýba posledné telo.
Ak sú argumenty k celkuvzájomné pôsobenie vyhlásenie vyžaduje viac ako jeden riadok, všetky argumenty môžu byť "zarovnané" do jedného, aby sa zabránilo ukončeniu každého riadku spätným lomítkom. V tomto jednom prípade sa zvyčajné substitúcie Tcl vyskytnú napriek zátvorkám.
Napríklad nasledujúci príkaz spustí interakciu s nasledujúcimi dvojicami string-body: Keď sa stlačí ^ Z,očakávať je pozastavená. (Ďalej len-reset príznak obnoví terminálové režimy.) Keď je stlačené tlačidlo ^, používateľ uvidí, že ste zadali ovládací prvok A a proces sa odošle a ^ A. Keď stlačíte $, používateľ uvidí dátum. Po stlačení tlačidla ^ C,očakávať východy. Ak sa zadá "foo", používateľ vidí "bar". Keď je stlačené tlačidlo ~~,očakávať tlmočník beží interaktívne.
nastaviť CTRLZ 032 interakciu {-reset $ CTRLZ {exec kill -STOP pid} 001 {send_user "ste zadali ovládací prvok-A n"; odoslať " 001"} $ {send_user "Dátum je formát hodín hodiny sekundy"} 003 exit foo {send_user "bar"} ~~}
V pároch reťazec-body sa reťazce zhodujú v poradí, v akom sú uvedené ako argumenty. Struny, ktoré čiastočne zodpovedajú, nie sú odoslané do súčasného procesu pred očakávaním zvyšku. Ak sú zadané znaky tak, aby sa už nedalo dosiahnuť zhoda, iba časť reťazca bude odoslaná do procesu, ktorý nedokáže začať iný zápas. Takže reťazce, ktoré sú podradené čiastkové zhody, sa môžu neskôr zhodovať, ak sa pôvodné reťazce, ktoré sa pokúšali o zápas, nakoniec zlyhajú.
V predvolenom nastavení je zhoda reťazca presná, bez toho, aby existovali žiadne divoké karty. (Na rozdiel od tohoočakávať Príkaz používa štandardne vzory v globálnom štýle.)-EX príznak môže byť použitý na ochranu vzorov, ktoré by inak mohli zodpovedaťvzájomné pôsobenie vlajkami. Každý vzor začínajúci znakom "-" by mal byť chránený týmto spôsobom. (Všetky reťazce začínajúce "-" sú vyhradené pre budúce možnosti.)
-R flag vynúva reťazec, ktorý má byť interpretovaný ako vzor regexp. V tomto prípade sú v premennej uložené zodpovedajúce podčiarknuté položky interact_out podobne ako toočakávať ukladá svoj výstup do premennejexpect_out ,-indices vlajka je podobne podporovaná.
Vzoreof predstavuje akciu, ktorá sa vykoná na konci súboru. Oddelenéeof vzor môže tiež nasledovať-výkon príznakom, v ktorom sa porovnáva, ak sa zistí počas záznamu výstupu eof. Predvolenéeof akcia je "návrat", takževzájomné pôsobenie jednoducho sa vráti na akýkoľvek EOF.
Vzorčas vypršal zavádza časový limit (v sekundách) a akciu, ktorá sa vykoná po tom, čo sa pre daný čas neprečítali žiadne znaky.čas vypršal vzor sa vzťahuje na naposledy špecifikovaný proces. Neexistuje predvolený časový limit. Špeciálna premenná "timeout" (používaočakávať príkaz) nemá vplyv na tento časový limit.
Napríklad, nasledujúce vyhlásenie by sa mohlo použiť na autológovanie používateľov, ktorí nešifovali nič za hodinu, ale stále dostávajú časté systémové správy:
interact -input $ user_spawn_id timeout 3600 návrat-výstup $ spawn_id
Ak je vzorom kľúčové slovonulový , a nulové sú povolené (prostredníctvomremove_nulls príkaz), zodpovedajúce telo sa vykoná, ak je zhodná jedna ASCII 0. Nie je možné priradiť 0 bajtov cez globálne alebo regexp vzory.
Predbežný vzor s vlajkou-ja píšem spôsobuje premennú interact_out (spawn_id) nastaviť na spawn_id, ktorý zodpovedal vzoru (alebo eof).
Akcie ako naprprestávka aďalej spôsobujú riadiace štruktúry (t.j.,pre , proc ) správať sa obvyklým spôsobom. všakspiatočný spôsobí interakciu s návštevníkominter_return príčinyvzájomné pôsobenie spôsobiť návrat v jeho volajúceho. Napríklad, ak volal "proc foo"vzájomné pôsobenie ktoré potom vykonali akciuinter_return , proc foo by sa vrátil. (To znamená, že akvzájomné pôsobenie volátlmočník interaktívne písaniespiatočný spôsobí, že interakcia bude pokračovať, zatiaľ čointer_return spôsobí, že sa interaktívne vráti k volajúcemu.)
počasvzájomné pôsobenie , surový režim sa používa tak, aby všetky znaky mohli byť prenesené na aktuálny proces.Ak súčasný proces nezachytí signály riadenia úlohy, zastaví sa, ak bude vyslaný signál zastavenia (predvolene ^ Z). Ak ho chcete reštartovať, pošlite signál pokračovania (napríklad "kill-CONT"). Ak naozaj chcete odoslať SIGSTOP do takého procesu (podľa ^ Z), najskôr zvážte trieštenie csh a potom spustite program. Na druhej strane, ak chcete poslať SIGSTOPočakávať sám, prvý hovor tlmočník (možno pomocou znaku úniku), a potom stlačte tlačidlo ^ Z.
Párové reťazce môžu byť použité ako skratka, aby sa zabránilo nutnosti vstúpiť do tlmočníka a vykonať príkazy interaktívne. Predchádzajúci režim terminálu sa používa pri vykonávaní tela páru struny a tela.
Pre rýchlosť sa v predvolenom nastavení vykonávajú akcie v nespracovanom režime.-reset príznak resetuje terminál do režimu, ktorý mal predtýmvzájomné pôsobenie bol vykonaný (vždy varený režim). Upozorňujeme, že znaky zadané pri prepínaní režimu sa môžu stratiť (nešťastná funkcia ovládača terminálu v niektorých systémoch). Jediný dôvod na použitie-reset je ak vaša akcia závisí od spustenia v režime varenia.
echo ' príznak odošle znaky, ktoré zodpovedajú nasledujúcemu vzoru späť do procesu, ktorý ich vygeneroval pri čítaní každého znaku. To môže byť užitočné, keď používateľ potrebuje zobraziť spätnú väzbu z čiastočne napísaných vzorov.
Ak sa vzor opakuje, ale nakoniec sa nezhoduje, znaky sa odošlú do procesu plodu. Ak sa proces rozmnožovania odráža, užívateľ uvidí znaky dvakrát.echo ' je pravdepodobne vhodný iba v situáciách, keď je pravdepodobné, že používateľ nebude dokončiť vzor. Napríklad nasledujúci výňatok pochádza z rftp, rekurzívny-ftp skript, kde je používateľ vyzvaný na zadanie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~; Sú to tak ďaleko od bežných príkazov ftp, že používateľ pravdepodobne nepríde ~, po ktorom nasleduje čokoľvek iné, s výnimkou chyby, v takom prípade pravdepodobne ignorujú výsledok.
interagovať {-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}
-nobuffer vlajka odosiela znaky, ktoré zodpovedajú nasledujúcemu vzoru v procese výstupu, keď sa čítajú znaky.
Toto je užitočné, ak chcete, aby program zopakoval vzor. Napríklad je možné sledovať, kde sa osoba volá (Hayesov modem). Zakaždým, keď sa zobrazí "atd", skript zaznamená zvyšok riadku.
proc lognumber {} {interact -nobuffer -re "(. *) r" návrat kladie $ log "formát hodín hodiny sekund: volaný $ interact_out (1, string)" interact -nobuffer "atd"
počasvzájomné pôsobenie , predchádzajúce použitielog_user je ignorovaná. Konkrétne,vzájomné pôsobenie bude nútiť jeho výstup, aby bol zaznamenaný (odoslaný na štandardný výstup), pretože sa predpokladá, že používateľ nechce slepko komunikovať.
-o príznak spôsobí, že sa na výstup aktuálneho procesu použijú nasledujúce páry kľúč-body. To môže byť užitočné napríklad pri rokovaní s hostiteľmi, ktorí odosielajú neželané znaky počas relácie telnet.
Predvolene,vzájomné pôsobenie Očakáva, že používateľ bude písať stdin a čítať stdoutočakávať spracovať sám.-u flag (pre používateľa)vzájomné pôsobenie hľadať používateľa ako proces nazvaný jeho argumentom (ktorý musí byť plodným ID).
To umožňuje, aby dva nesúvisiace procesy boli spojené bez použitia explicitnej slučky. Ak chcete pomôcť pri ladení, očakávajte, že diagnostika vždy prejde na stderr (alebo stdout pre určité informácie o protokolovaní a ladení). Z toho istého dôvodutlmočník príkaz bude čítať interaktívne zo stdin.
Napríklad nasledujúci fragment vytvorí prihlasovací proces. Potom vytočí užívateľa (nie je znázornený) a nakoniec spojí obidva dohromady. Samozrejme, každý proces môže byť nahradený prihlásením. Napríklad shell by umožnil používateľovi pracovať bez dodania účtu a hesla.
spawn prihlásiť nastaviť prihlásenie $ spawn_id spawn tip modem # dial out užívateľovi # pripojiť užívateľa na prihlásenie interact -u $ login
Ak chcete odoslať výstup do viacerých procesov, uveďte zoznam každého zoznamu idúcich znakov, ktorý predchádzal a-výkon flag. Vstup pre skupinu výstupných identifikátorov trávy môže byť určený zoznamom idúcich plôch, ktoré predchádzalo a-input flag. (Obe-input a-výkon môže mať zoznamy v rovnakej forme ako-i vlajka vočakávať príkaz, s výnimkou, že any_spawn_id nemá zmyselvzájomné pôsobenie .) Na tento vstup sa vzťahujú všetky nasledujúce príznaky a reťazce (alebo vzory), kým sa nezobrazí iný príznak vstupu. Ak nie-input zdá,-výkon znamená "-input $ user_spawn_id -output". (Podobne aj vzory, ktoré nemajú-input .) Ak jeden-input je zadané, prepíše $ user_spawn_id. Ak je sekundu-input je špecifikované, prepisuje $ spawn_id. dodatočný-input môžu byť špecifikované príznaky.
Dva implicitné vstupné procesy majú štandardné nastavenie výstupov ako $ spawn_id a $ user_spawn_id (opačne). Ak-input vlajka sa objaví bez-výkon vlajka, znaky z tohto procesu sa zlikvidujú.
-i flag predstavuje náhradu za súčasný spawn_id, keď nie je žiadny iný-input alebo-výkon používajú sa vlajky. Príznak A -i znamená príznak -o.
Je možné meniť procesy, s ktorými sa pracuje, použitím nepriamych identifikátorov trávy. (Nepriame identifikátory tŕstia sú popísané v sekcii príkazu očakávania.) Nepriame identifikátory trávenia môžu byť špecifikované pomocou príznakov -i, -u, -input alebo -output.
tlmočník args
spôsobí, že používateľ bude interaktívne vyzvanýočakávať a Tcl príkazy. Výsledok každého príkazu sa vytlačí.
Akcie ako naprprestávka aďalej spôsobujú riadiace štruktúry (t.j.,pre , proc ) správať sa obvyklým spôsobom. všakspiatočný spôsobí, že tlmočník sa vráti k svojmu volajúcemu, zatiaľ čointer_return príčinytlmočník spôsobiť návrat v jeho volajúceho. Napríklad, ak volal "proc foo"tlmočník ktoré potom vykonali akciuinter_return , proc foo by sa vrátil. Akýkoľvek iný príkaz spôsobítlmočník pokračovať v podávaní nových príkazov.
V predvolenom nastavení výzva obsahuje dve celé čísla. Prvé celé číslo opisuje hĺbku hodnotiacej vrstvy (t. J. Koľkokrát bola volaná Tcl_Eval). Druhé celé číslo je identifikátor histórie Tcl. Príkaz môžete nastaviť definovaním postupu s názvom "prompt1", ktorého návratová hodnota sa stane ďalšou výzvu. Ak má príkaz otvorené úvodzovky, zátvorky, zátvorky alebo zátvorky, sekundárny riadok (štandardne "+>") sa vydáva na novom riadku. Vedľajšiu výzvu možno nastaviť definovaním postupu s názvom "prompt2".
počastlmočník , varený režim sa používa, aj keď jeho volajúci používal surový režim.
Ak je stdin zatvorený,tlmočník sa vráti, ak nie je-eof je použitý príznak, v tomto prípade sa vyvolá nasledujúci argument.
log_file args -a súbor
Ak je poskytnutý názov súboru,log_file bude zaznamenávať prepis relácie (začínajúci v tomto bode) v súbore.log_file zastaví nahrávanie, ak nebol zadaný žiadny argument. Predchádzajúci súbor denníka je zatvorený.
Namiesto názvu súboru sa môže pomocou identifikátora súboru Tcl poskytnúť identifikátor súboru Tcl-otvorené alebo-leaveopen vlajky. Toto je podobnépoter Príkaz. (Pozripoter pre viac informácií.)
-a príznaky sily vlajky, ktoré majú byť zaznamenané, ktoré boli potlačenélog_user Príkaz.
V predvolenom nastavenílog_file príkaz pripojí na staré súbory, skôr než ich skracovať, aby ste sa mohli v jednom relácii vypnúť a odhlásiť viackrát. Ak chcete skrátiť súbory, použite-noappend flag.
-Info príznak príznaku log_file vráti opis najnovších nedoručených argumentov.
log_user -info | 0 | 1
Predvolene je protokol odoslaný / očakávaný zaznamenaný do stdout (a logfile, ak je otvorený). Logovanie na stdout je zakázané príkazom "log_user 0" a opätovne zapnuté "log_user 1". Zaznamenávanie do denníka je nezmenené.
-Info flag spôsobí, že log_user vráti opis najnovších nedoručených argumentov.
match_max -d -i spawn_id veľkosť
definuje veľkosť vyrovnávacej pamäte (v bajtoch), ktorá sa používa interneočakávať , So žiadnym veľkosť argument je vrátená aktuálna veľkosť.
S-d flag, je nastavená predvolená veľkosť. (Východisková hodnota je 2000)-i flag, veľkosť je nastavená pre pomenované ID tresky, inak je nastavená pre aktuálny proces.
overlay - # spawn_id - # spawn_id … program args
vykoná "program args "namiesto aktuálnehoočakávať program, ktorý končí. Rozpoznaný argument pomáha spojiť pomlčku pred názvom príkazu, ako keby to bol prihlasovací shell. Všetky súbory spawn_ids sú uzavreté okrem tých, ktoré sú pomenované ako argumenty. Tieto sú namapované na identifikované identifikátory súborov.
Spawn_ids sú mapované na identifikátory súborov pre nový program, ktorý má dediť. Napríklad nasledujúci riadok beží na šachách a umožňuje ich ovládanie súčasným procesom - povedzme šachový majster.
prekrytie -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id šach
Je to efektívnejšie ako "interagovať -u", ale obetuje schopnosť robiť naprogramované interakcie už odočakávať proces už nie je pod kontrolou.
Upozorňujeme, že nie je k dispozícii žiaden ovládací terminál. Ak teda odpojíte alebo znovu prepočíte štandardný vstup, programy, ktoré vykonávajú kontrolu úloh (shell, prihlásenie atď.), Nebudú správne fungovať.
parita -d -i spawn_id hodnota
definuje, či by sa parita mala zachovať alebo odstrániť z výstupu procesov, ktoré sa rozvinuli. ak hodnota je nulová, parita sa odtiahne, inak sa neodstraňuje. So žiadnym hodnota argument sa vráti aktuálna hodnota.
S-d flag, je nastavená predvolená hodnota parity. (Východisková hodnota je 1, t.j. parita nie je odstránená)-i flag, hodnota parity je nastavená pre pomenovaný identifikátor tresky, inak je nastavený pre aktuálny proces.
remove_nulls -d -i spawn_id hodnota
definuje, či sú nuly zadržané alebo odstránené z výstupu plodených procesov predtým, než sa vzorka zhoduje alebo sa ukladá do premennej expect_out alebo interact_out , ak hodnota je 1, odstránia sa nuly. ak hodnota je 0, nulls nie sú odstránené. So žiadnym hodnota argument sa vráti aktuálna hodnota.
S-d je nastavená predvolená hodnota. (Východisková hodnota je 1, tzn. Odstránia sa nuly)-i flag, hodnota je nastavená pre pomenovaný identifikátor tresky, inak je nastavený pre aktuálny proces.
Bez ohľadu na to, či sú nuly odstránené,očakávať bude nahrávať nuly bajtov do denníka a stdout.
odoslať reťazec -flags
odošle povrázok k aktuálnemu procesu. Napríklad príkaz
poslať "hello world r"
odošle znaky, ktoré sú súčasťou aktuálneho procesu. (Tcl obsahuje príkaz typu printf (nazývanýformát ), ktoré môžu vytvárať ľubovoľne zložité reťazce.)
Znaky sa odosielajú okamžite, hoci programy s riadkovým vstupom nečítajú znaky, kým sa nezobrazí znak návratu. Vrátený znak je označený ako " r".
-- flag núti ďalšie argumenty interpretovať ako reťazec namiesto vlajky.Ktorémukoľvek reťazcu môže predchádzať znak "-", či už skutočne vyzerá ako príznak. To poskytuje spoľahlivý mechanizmus na špecifikáciu variabilných reťazcov bez toho, aby boli zapadnutí tým, ktorí náhodou vyzerajú ako vlajky. (Všetky reťazce začínajúce "-" sú vyhradené pre budúce možnosti.)
-i flag vyhlasuje, že reťazec je odoslaný na názov spawn_id. Ak je spawn_id user_spawn_id , a terminál je v nespracovanom režime, nové riadky v reťazci sú preložené na návrat-newline sekvencie tak, aby sa zdali, akoby bol terminál v režime varenia.-zo surového flag zakáže tento preklad.
-nulový vlajka odosiela nula znakov (0 bajtov). V predvolenom nastavení sa vysiela jedna nula. Celé číslo môže nasledovať-nulový ak chcete zistiť, koľko nulls sa má odoslať.
-prestávka vlajka vytvára podmienku zlomu. To má zmysel iba vtedy, ak sa id spawn označuje tty zariadením otvoreným cez "spawn-open". Ak ste vytvorili proces, ako je tip, mali by ste použiť konvenciu tipov na vytvorenie prestávky.
-s príkaz vlajkových síl sa má posielať "pomaly", a tak sa vyhnúť bežnej situácii, keď počítač prekročil vstupnú vyrovnávaciu pamäť, ktorá bola navrhnutá pre človeka, ktorý by nikdy neprekročil rovnaký buffer. Tento výstup je riadený hodnotou premennej "send_slow", ktorá obsahuje zoznam dvoch prvkov. Prvým prvkom je celé číslo, ktoré opisuje počet bajtov, ktoré majú byť odoslané na atómovej úrovni. Druhým prvkom je skutočné číslo, ktoré opisuje počet sekúnd, v ktorých musí byť atómové odosielanie oddelené. Napríklad, "set send_slow {10 .001}" by núti "send -s" posielať reťazce s 1 milisekundou medzi každých 10 odoslaných znakov.
-h vlajkové sily majú byť odoslané (trochu) ako ľudské písanie. Medzi znakmi sa objavujú oneskorenia podobné človeku. (Algoritmus je založený na distribúcii Weibullu s úpravami, ktoré vyhovujú tejto konkrétnej aplikácii.) Tento výstup je riadený hodnotou premennej "send_human", ktorá













