Linux / Unix buyruqlari kutilmoqda

Kutilayotgan dastur - boshqa interfaol dasturlarga skriptga asoslangan dastur. Skriptdan so'ng, "Beklar" dasturdan qanday kutish mumkinligini va to'g'ri javob nimani anglatishini biladi. Tarjima qilingan til dallanma va yuqori darajadagi nazorat tuzilmalarini muloqotni boshqarishga imkon beradi. Bunga qo'shimcha ravishda, foydalanuvchi nazoratni olishi va kerak bo'lganda to'g'ridan-to'g'ri ta'sir qilishi mumkin, keyinchalik skriptga qaytib kelishi mumkin.

Expectk Expect va Tk aralashmasidir. U "Beklar" va "TK" xohishi kabi o'zini tutadi. Kutilmaganda to'g'ridan-to'g'ri C yoki C ++ da Tcl holda foydalanish mumkin.

"Kutinglar" nomi uucp, kermit va boshqa modemlarni boshqarish dasturlari tomonidan ommalashtiradigan yuborish / kutish ketma-ketliklari fikridan kelib chiqadi. Biroq, uucpdan farqli o'laroq, kutish har qanday dastur va vazifani yodda tutadigan foydalanuvchi darajasidagi buyruqlar sifatida ishlasa bo'ladi. Bir vaqtning o'zida bir nechta dastur bilan suhbatlashish mumkin.

Qanday qila olasiz?

Misol uchun, bu erda buyruqni bajarish mumkin bo'lgan ba'zi narsalar:

Qobiq bu vazifalarni bajarolmaydigan turli sabablar mavjud. Barcha kutish mumkin.

Umuman, kutish, dastur va foydalanuvchi o'rtasidagi shovqinni talab qiluvchi har qanday dasturni ishga tushirish uchun foydalidir. Zarur bo'lgan narsa, shovqinni dasturiy jihatdan ifodalash mumkin. Kutilayotgan dasturni to'xtatmasdan, foydalanuvchilarga nazoratni qaytarishi ham mumkin. Xuddi shunday, foydalanuvchi istalgan vaqtda skriptni tekshirishga qaytishi mumkin.

Foydalanish

O'qish uchun buyruqlar ro'yxati uchun cmdfile o'qiladi. Ko'rinib turibdiki, #! skriptni bajaruvchi sifatida belgilash va skriptda birinchi qatorni yaratish orqali:

#! / usr / local / ming / kutish -f

Albatta, yo'lni qaerdan kutish mumkinligini aniq tasavvur qilish kerak. / Ushr / local / bin faqatgina misol.

-c belgisi buyruq fayllaridan oldin bajariladigan buyruqni oldindan belgilaydi. Buyruqlar qobiq tomonidan buzilmasligi uchun buyruqlar keltirilishi kerak. Ushbu parametr bir necha marta ishlatilishi mumkin. Bir nechta buyruqlar bitta nuqta-vergul bilan ajratish yo'li bilan bajarilishi mumkin. Buyruqlar ko'rinadigan tartibda bajariladi. Expectk dan foydalanilganda ushbu parametr "-command" deb belgilanadi.

-d bayrog'i, asosan kutish va o'zaro ta'sir qilish kabi buyruqlar ichki faoliyatiga hisobot beruvchi ba'zi diagnostik chiqishni ta'minlaydi. Bu bayroq "Exp_internal 1" bilan "Bekor qilish" buyrug'i boshida bir xil ta'sirga ega va "Expect" versiyasi chop etiladi.

-D bayrog'i interaktiv nosozliklarni tuzatishga imkon beradi. To'liq son qiymatiga rioya qilish kerak. Hisobotda qiymati nol bo'lmagan bo'lsa, yoki ^ C tugmachasi yoki to'xtash nuqtasi urilgan bo'lsa yoki boshqa tegishli xato tuzatuvchi buyrug'i ko'rsatilsa, tuzatuvchi keyingi TCL protsedurasidan oldin nazoratni oladi. Expectk dan foydalanganda ushbu parametr - Debug deb belgilanadi.

-f-bayrog'i buyruqlarni o'qiy oladigan faylni oldindan belgilaydi. Bayroqning o'zi ixtiyoriy, chunki u faqat #! ko'rsatma, shuning uchun buyruq satrida boshqa dalillar bo'lishi mumkin. Expectk dan foydalanilganda ushbu parametr -file sifatida ko'rsatiladi.

Odatiy bo'lib, buyruq fayl xotiraga o'qiladi va to'liq bajariladi. Ba'zida fayllarni bitta satr o'qish uchun kerak. O'zboshimchalik bilan fayllarni shu tarzda ishlashga majbur qilish uchun, -b belgisini ishlating. Expectk dan foydalanilganda ushbu parametr - buffer-deb belgilanadi.

Faylning nomi "-" satrida berilgan bo'lsa, uning o'rniga standart kirish o'qiladi. "./-" dan foydalanib, aslida "-" deb nomlangan fayldan o'qish.

-i bayrog'i, ularni fayldan o'qish o'rniga buyruqlarni interaktiv ravishda so'rashini kutadi. Chaqiruv exit buyrug'i yoki EOF orqali tugatiladi. Agar buyruq fayli yoki -c ishlatilmasa, -i bayrog'i qabul qilinadi. Expectk dan foydalanilganda bu parametr interaktiv sifatida ko'rsatiladi.

- variantlarning oxirini cheklash uchun ishlatilishi mumkin. Bu siz kutubxonangizga parametrga o'xshash dalilni Bekor tomonidan talqin qilinmasdan topshirish uchun foydalidir. Bu foydali tarzda #! Bekor tomonidan har qanday bayroqchani sharhlashni oldini olish. Misol uchun, quyida keltirilgan argumentlar o'zgarmaydigan argumentdagi buyruq fayl nomi bilan birga asl argumentlarni qoldiradi.

#! / Ushr / mahalliy / ming / kutish -

Eslatib o'tamiz, odatiy getopt (3) va exe (2) konventsiyalari #! yo'nalish.

Agar mavjud bo'lsa, $ exp_library / expect.rc fayli mavjud bo'lsa, avtomatik ravishda manbadir. (Expectk dan foydalanilganda ushbu parametr -NORC deb ko'rsatilgan.) Buning ortidan, ~ / .expect.rc faylini -n flag ishlatilmaguncha avtomatik ravishda manbadan oladi. DOTDIR muhit o'zgaruvchisi aniqlansa, u katalog sifatida ko'rib chiqiladi va u erda .expect.rc o'qiladi. Expectk dan foydalanilganda ushbu parametr -norc deb belgilanadi. Ushbu manba faqatgina "-j" bayroqlarini bajarganidan keyin sodir bo'ladi.

-v sabablari versiya raqami va chiqishini chop etishni kutish. Uzoq bayroq nomlarini ishlatadigan Expectk-da tegishli bayroq - bu variant.

Majburiy emas args ro'yxatga kiritiladi va argv va. argc argv uzunligi bilan boshlanadi.

Argv0 hech qanday buyruq ishlatilmasa, skript yoki ikkilik nomi sifatida aniqlanadi. Misol uchun, quyidagi buyruq fayli va birinchi uchta argument:

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

Buyruqlar

Vositachi buyruq tilini ishlatishini kuting. TCL nazorat oqimini (if, break, for break), ekspression qanday baholashni va rekursionand protsedura ta'rifi kabi bir qancha boshqa xususiyatlarni ta'minlaydi. Bu erda ishlatiladigan, lekin aniqlanmagan buyruq (set, if, exec) TCl buyruqlaridir. Kutilayotgan qo'shimcha buyruqlar qo'llab-quvvatlanadi. Aks belgilanmagan buyruqlar bo'sh satrni qaytaradi.

Buyruqlar alifbo tartibida bo'lib, ular tezda joylashishi mumkin. Shu bilan birga, yangi foydalanuvchilar, bu tartibda so'yish, jo'natish, kutish va o'zaro ta'sir o'tkazish haqidagi tavsiflarni o'qib, undan foydalanishni osonlashtirishi mumkin.

yopish [-slav] [-onexec 0 | 1] [-i spawn_id]

joriy jarayonga ulanishni o'chiradi. Ko'pgina interfaol dasturlar EOFni stdin va chiqishlarida aniqlaydi; Shunday qilib, odatda, jarayonni ham o'ldirish uchun juda yaqin . -i bayrog'i jarayoni nom berilgan spawn_idga mos ravishda yopilishini e'lon qiladi.

Har ikkisi ham kutishadi va o'zaro ta'sir qilish jarayoni hozirgi jarayoni qachon yopilganini va yopiq ravishda yaqinlashishini aniqlaydi, ammo agar jarayonni "exec $ pid" ni o'ldirish bilan o'ldirsangiz, aniq yaqin qo'ng'iroq qilishingiz kerak .

-onexec bayrog'i, spawn idining har qanday yangi tugallangan jarayonlarda yopiq yoki yopiq yoki yopiq jarayonni belgilab qo'yishini aniqlaydi. Spawn idini ochiq qoldirish uchun 0 qiymatini ishlating. Nol bo'lmagan tamsayı qiymati har qanday yangi jarayonda yopiq joyni yopib qo'yadi.

Qo'shimchalar bayroqchasining idi bilan bog'liq bo'lgan qulni yopadi. Ulanish yopilganda, qul hali ham ochiq bo'lsa, avtomatik ravishda yopiladi.

Ulanish yopiq yoki aniq yopilmasa ham, tegishli yadroli protsedurali uyani tozalash uchun kutib turing. Yakunlovchi buyruq, kutish chaqirmaydi, chunki u jarayon ulanishini yopib qo'yadigan hech qanday kafolat yo'q.

disk raskadrovka [[-now] 0 | 1]

bir TCL tuzatuvchisi nazoratchilarini tekshiradi va fikrlaringizni to'xtatib qo'yadi.

Hech qanday dalil bo'lmasa, 1 xato aylantiruvchi ishlamayotgan bo'lsa qaytariladi, aks holda 0 qaytariladi.

1 argument bilan xato ayiruvchi boshlanadi. 0 argümanla, xato ayıklayıcı to'xtatiladi. Agar 1 argument oldidan -now bayrog'i bo'lsa, xato tuzatuvchisi darhol ishga tushiriladi. Aks holda, tuzatuvchini keyingi TCL iborasi bilan boshlanadi.

Debug buyrug'i hech qanday tuzoqlarni o'zgartirmaydi. Buni "D" belgisi bilan kutish uchun solishtiring.

Olib tashlash buyrug'i terminaldan uzilib qolgan jarayoni uzib qo'yadi. Orqa fonda ishlash davom etmoqda. Jarayon o'z jarayon guruhiga beriladi. Standart I / U / dev / null ga yo'naltiriladi.

Quyidagi qismda buyruq faylini fonda ishlashni davom ettirish uchun uzilishni ishlatadi.

agar {[fork]! = 0} chiqmasa. . .

Quyidagi skript parolni o'qiydi va undan so'ng har safar parol talab qiladigan dasturni ishga tushiradi. Buyruq fayli parolni faqatgina bir marta kiritishingiz kerak bo'ladi.

() * {{fork]! = 0} {uyqu 3600; davom etish} spawn priv_prog bekor qilishni bekor Parol: jo'natish "$ expect_out ( 1, string) \ r ". . . Chiqish }

Qobiq asenkron jurnali funktsiyasi (&) orqali uzilishdan foydalanishning afzalligi, kutish bekor qilishdan oldin terminal parametrlarini saqlashi va keyinchalik ularni yangi ptyslarga qo'llashi mumkin. & & Expect terminalining parametrlarini o'qish imkoniyati yo'q, chunki terminal bekor qilingan vaqt bilan aloqadan uzilib qoladi.

chiqish [-opts] [status]

sabablari chiqib ketishni kutish yoki buni amalga oshirishga tayyorgarlik ko'rish.

-onexit bayrog'i keyingi argumentni exit handler sifatida ishlatishga sabab bo'ladi. Argumentsiz, joriy chiqish moslamasi qaytarib beriladi.

Nexit bayrog'i Bekorga chiqishga tayyorgarlik ko'rishga sabab bo'ladi, lekin aslida operatsion tizimga qaytarilgan nazoratni qisqartiradi. Foydalanuvchilar tomonidan belgilangan exit handler, shuningdek, "Bekor" ning ichki ichki ishlovchilaridan foydalaniladi. Boshqa hech qanday buyruqlar bajarilmasligi kerak. Agar boshqa Tcl kengaytmalari bilan kutish qilsangiz foydali bo'ladi. Hozirgi tarjimon (va TK muhitida asosiy oynada) boshqa Tcl kengaytmalari tozalanishi uchun qoladi. Agar "Bekor" ning chiqishi qayta chaqirilsa (bu mumkin bo'lsa-da), ishlovchilar qayta ishlamaydi.

Chiqib ketganidan so'ng, ajratilgan jarayonlarga barcha ulanishlar yopiladi. Yopish jarayoni EOF sifatida aniqlanadi. exit , oddiy _exit (2) protsedurasidan tashqari hech qanday boshqa amallarni bajarmaydi. Shunday qilib, EOF ni tekshirmaydigan spawned jarayonlar davom etishi mumkin. (Turli shartlar, masalan, ishlov berish jarayoni qanday signallarni jo'natish kerakligini aniqlash uchun muhimdir, ammo ular sistemaga bog'liq, odatda chiqish (3) ostida hujjatlashtirilgan.) Ishlashni davom ettirishni boshlash jarayoni init bilan devralınacaktır.

status (yoki 0 bo'lmasa) Bekor qilishning chiqish holati sifatida qaytariladi. agar skriptning oxiriga yetib borsa, chiqish bekor qilinadi.

exp_continue [-continue_timer]
Exp_continue buyrug'i odatdagidek qaytib kelmasdan turib , ijro etilishini davom ettirishga imkon beradi. Sukut bo'yicha exp_continue takrorlash taymerini qayta tiklaydi . -continue_timer bayrog'i taymerni qayta ishga tushirishni taqiqlaydi. (Qo'shimcha ma'lumot olishni kuting .)

exp_internal [-f fayli] qiymati
qiymatni nolga teng bo'lmasa, stderrni kutish uchun ichki buyruq ma'lumotlarini yuborish uchun qo'shimcha buyruqlar keltiradi. Qiymat 0 ga teng bo'lsa, ushbu chiqish o'chiriladi. Diagnostika ma'lumotlari olingan har bir belgi va joriy chiqishning naqshlarga mos kelishiga qaratilgan har qanday urinish mavjud.

Majburiy emas fayl taqdim etilsa, barcha normal va disk raskadrovka chiqishi o'sha faylga (qiymatning qiymatidan qat'iy nazar) yoziladi. Avvalgi diagnostika chiqdi fayli yopilgan.

-info bayrog'i so'nggi berilgan no-info argumentlarining tavsifini qaytarish uchun exp_internal sabab bo'ladi.

exp_open [args] [-i spawn_id]
asl spawn idiga mos keladigan TCL identifikatorini qaytaradi. Fayl identifikatori Tcl ning ochiq buyrug'i bilan ochilganidek ishlatilishi mumkin. (Spawn identifikatori endi ishlatilmasligi kerak.) Kutish bajarilmasligi kerak.

" Ko'tarish " belgisi, " Bekor qilish" buyruqlaridan foydalanish uchun ochilgan idni ochiq qoldiradi. Spawn idida kutish bajarilishi kerak.

exp_pid [-i spawn_id]
Hozirgi vaqtda ishlab chiqarilgan jarayonga mos keladigan jarayon kimligini qaytaradi. -i bayrog'i ishlatilsa, pid qaytarilgan spawn identifikatoriga mos keladi.

exp_send
yuborish uchun taxallus.

exp_send_error
send_error uchun taxallus.

exp_send_log
Send_log uchun bir taxallus.

exp_send_tty
send_tty uchun bir taxallus.

exp_send_user
send_user uchun taxallus.

exp_version [[-xit] versiya]
skriptning hozirgi versiyasi bilan mos kelishini ta'minlash uchun foydalidir.

Hech qanday argumentga ega bo'lmagan holda, Bekorning joriy versiyasi qaytariladi. Keyin ushbu versiya ssenariyangizda kodlanishi mumkin. Agar siz aslida so'nggi versiyalarning xususiyatlaridan foydalanmayotganingizni bilsangiz, avvalgi versiyani tanlashingiz mumkin.

Versiyalar nuqta bilan ajratilgan uchta raqamdan iborat. Birinchidan, asosiy raqam. Turli xil raqamlar bilan kutish versiyalari uchun yozilgan skriptlar deyarli ishlamaydi. exp_version katta raqamlar mos kelmasa, xatolarni qaytaradi.

Ikkinchisi esa kichik raqam. Joriy versiyadan kichik sonli versiyaga ega bo'lgan skriptlar yangi xususiyatga bog'liq bo'lishi mumkin va ishlamasligi mumkin. exp_version , katta raqamlar mos keladigan bo'lsa, xatolik qaytaradi, lekin skript kichik raqamlari ishlaydigan kutishlardan kattaroqdir.

Uchinchidan, versiya taqqoslashda ishtirok etmayotgan raqam. Biroq, dasturiy ta'minotni tarqatilishini kutish , qo'shimcha hujjat yoki optimallashtirish kabi biron-bir tarzda o'zgartirilganda oshadi. Har bir yangi kichik versiyada u 0 ga qayta tiklanadi.

" -exit" bayrog'i bilan " Bekor qilish" xato yozib chiqadi va versiya eskirgan bo'lsa chiqadi.

kutish [[-opts] pat1 body1] ... [-opts] patn [bodyn]
namunalardan bittasi mo'rtlashtirilgan jarayonning chiqishi, belgilangan vaqt oralig'i yoki faylning oxiriga mos kelgunicha kutadi. Agar oxirgi tananing bo'sh bo'lsa, uni rad etish mumkin.

Eng so'nggi kutilgan buyruqlar naqshlari boshqa naqshlar oldida bevosita ishlatiladi. Eng yaqin vaqtdan keyin kutilgan buyruqdan olingan naqshlar boshqa naqshlardan keyin bevosita ishlatiladi.

Agar barcha kutilayotgan bayonotning argumentlari bir nechta satrni talab qiladigan bo'lsa, barcha argumentlar har bir chiziqni teskari egri chiziq bilan tugatishdan saqlanish uchun biriga "taqillangan" bo'lishi mumkin. Ushbu holatda, odatdagidek Tcl takomillashtirilishi braxiyalarga qaramasdan sodir bo'ladi.

Agar nusxa eof kalit so'z bo'lsa, tegishli organ tanlov oxirida bajariladi. Kalit so'z vaqt tugashi naqsh bo'lsa, tegishli organ vaqt tugashi bilan amalga oshiriladi. Vaqt tugashi kaliti ishlatilmasa, takroriy nol harakati takrorlash vaqtida amalga oshiriladi. Odatiy takrorlash davri 10 sekunddan iborat bo'lsa-da, masalan, "30 marta belgilangan" tugmasi yordamida o'rnatilishi mumkin. Cheksiz vaqt tugashi -1 bilan belgilanishi mumkin. Agar naqsh kalit so'z sukut bo'lsa, tegishli korpus vaqtning tugashi yoki faylning oxirida bajariladi.

Naqsh bilan mos keladigan bo'lsa, unda mos keladigan korpus ijro etiladi. kutish , tananing natijasini qaytaradi (yoki biron bir naqshli mos kelmasa bo'sh satr). Agar bir nechta naqshlar mos keladigan bo'lsa, birinchi ko'rinadigan element tanani tanlash uchun ishlatiladi.

Har bir yangi chiqdi kelganda, ular har bir naqsh bilan tartiblangan tartibda taqqoslanadi. Shu sababli, o'yinning yo'qligi uchun oxirgi nusxani paydo bo'lishiga kafolat beruvchi narsa, masalan, xohish kabi, sinov qilishingiz mumkin. Hech qanday taklif bo'lmasa, vaqt tugashi bilan foydalanishingiz kerak (xuddi siz o'zingiz bilan aloqada bo'lganingizda ham).

Patternlar uchta usulda ko'rsatiladi. Odatiy bo'lib, naqshlar Tcl ning string match buyrug'i bilan ko'rsatilgan. (Bunday naqshlar odatda "glob" naqshlari deb ataladigan C-shell oddiy ifodalariga o'xshash). -Gl bayrog'i bayroqlarni kutish kutilgandek bo'lishi mumkin bo'lgan naqshlarni himoya qilish uchun ishlatilishi mumkin. "-" bilan boshlangan har qanday naqsh bu tarzda himoyalangan bo'lishi kerak. ("-" bilan boshlangan barcha satrlar kelgusi variantlar uchun saqlanadi.)

Misol uchun, quyidagi parcha muvaffaqiyatli loginni izlaydi. ( Abortni skriptning boshqa bir joyida belgilangan protsedura deb hisoblash kerak).

kutish {busy {puts busy \ n; exp_continue} muvaffaqiyatsiz tugadi "bekor parol" bekor qilish tugashi to'xtatildi}

To'rtinchi naqshda takliflar talab qilinadi, chunki u bo'shliqni o'z ichiga oladi, aks holda bu naqshni ishdan ajrata oladi. Xuddi shu harakatlar (3 va 4-chi kabi) bilan naqshlar harakatlarning ro'yxatini qayta talab qiladi. Bu regexp uslubidagi naqshlarni qo'llashdan qochish mumkin (quyida ko'rib chiqing). Glob uslubidagi naqshlarni yaratish haqida qo'shimcha ma'lumotni TCL qo'llanmasida topishingiz mumkin.

Regexp uslubidagi naqshlar Tcl-ning regexp ("muntazam ifoda" uchun qisqa) buyrug'i bilan belgilangan sintaksisini qidiradi. regexp naqshlari flag -re bilan kiritiladi . Oldingi misol, regexp yordamida qayta yozilishi mumkin:

kutish {busy {puts busy \ n; exp_continue} -re "muvaffaqiyatsiz" parol bekor qilindi "bekor qilish bekor qilindi}

Ikkala turdagi naqshlar ham "noaniq". Bu shuni anglatadiki, naqshlar butun mag'lubiyatga mos kelmasa-da, matni boshlash va oxirigacha mag'lubiyatning har qanday joyida boshlashi va yakunlashi mumkin. Bir mag'lubiyatning boshiga mos kelish uchun ^ tugmachasini va oxirigacha mos keladigan $ ni ishlating. Agar mag'lubiyatning oxirini kutmasangiz, javoblar osongina mag'lubiyatning o'rtasida joylashgan bo'lishi mumkin, chunki ular spawned jarayonidan aks ettirilgan. Hali ham to'g'ri natijalar chiqarayotganda, chiqim tabiiy ravishda ko'rinishi mumkin. Shunday qilib, stringning oxiridagi belgilarni aniq ifodalash mumkin bo'lsa, $ dan foydalanish tavsiya etiladi.

Ko'p muharrirlarda, $ va $ navbati navbati bilan navbati boshi va oxiriga to'g'ri keladi. Shu bilan birga, kutish xattiga yo'naltirilgan emasligi sababli, bu belgilar hozirgi vaqtda kutilayotgan buferda kutilayotgan ma'lumotlarning boshiga va oxiriga mos keladi (chiziqlar farqli o'laroq). (Shuningdek, quyida keltirilgan notani "sistema hazm qilish" bo'limiga qarang).

-ex bayrog'i naqshni "aniq" qator bilan tenglashtirishga olib keladi. *, ^, Va hokazolarni talqin qilish mumkin emas (garchi odatdagidek TCL konventsiyalari hamon saqlanib qolishi kerak). To'liq naqshlar har doim ham yo'q emas.

- Nomus bayrog'i kichik harfli belgilar kabi solishtirish uchun katta harflar belgilarini hosil qiladi. Naqsh ta'sir qilmaydi.

Chiqishni o'qiyotganda, 2000 baytdan oshiq oldingi baytlarni "unutib qo'yish" mumkin. Bu match_max funktsiyasi bilan o'zgartirilishi mumkin. (Agar ortiqcha katta qiymatlar naqsh taqqoslagichni sekinlashtirishi mumkinligiga e'tibor bering). Agar ro'yhatchi to'liq_buffer bo'lsa, match_max baytlari qabul qilingan bo'lsa va tegishli boshqa hech qanday naqshde mos kelmasa , tegishli organ ijro etiladi. Full_buffer kalit so'zi ishlatilganmi yoki yo'qmi, unutilgan belgilar kutilgandek_tagacha (bufer) yoziladi.

Agar ro'yhatdan o'tgan kalit so'z null bo'lsa va nulls ( allow_nulls buyrug'i bilan) ruxsat etilsa , tegishli ASCII 0 taalukli bo'lsa, tegishli organ ijro etiladi. Glob yoki regexp naqshlari orqali 0 byte taalukli bo'lishi mumkin emas.

Agar naqsh (yoki eof yoki full_buffer) mos keladigan bo'lsa, mos keladigan va oldindan mos bo'lmagan chiqdi o'zgaruvchiga expect_out (bufer) da saqlanadi. Up to 9 regexp substring ma`lumotlari expect_out (9, string) yordamida kutilgan_ut ( 1, string) o'zgaruvchilariga saqlanadi. Agar chizilgan namunadan avvalgi indekslar ishlatilsa, 10 satrning boshlang'ich va tugash indekslari ( lanj uchun mos shaklda) kutilgandek_ut (X, boshlang'ich) va wait_out (X, end) o'zgaruvchilarida saqlanadi. raqamli belgisi, buferdagi substring holatiga mos keladi. 0 butun naqshga mos keladigan satrlarni bildiradi va glob naqshlari va regexp naqshlari uchun yaratiladi. Misol uchun, agar jarayon "abcdefgh \ n" chiqishi chiqsa, natijalar:

kutish "CD"

quyidagi so'zlar bajarilganidek:

oldindan belgilash expect_out (0, string) cd set expect_out (bufer) abcd

va "efgh \ n" chiqdi buferida qoldiriladi. Agar jarayon "abbbcabkkkka \ n" chiqishi ishlab chiqarilgan bo'lsa, natijada:

(b *). * (k +) "

quyidagi so'zlar bajarilganidek:

kutish bekor qiling (0, boshlang'ich) 1 set expect_out (0, end) 10 set expect_out (0, string) bbbcabkkkk set expect_out (1, start) 2 set expect_out (1, end) 3 set expect_out (1, string) bb set expect_out (2, boshlang'ich) 10 set expect_out (2, end) 10 to'siq expect_out (2, string) k set expect_out (buffer) abbbcabkkkk

va "a \ n" chiqdi buferida qoldiriladi. "*" Nusxasi (va -re ". *") Jarayondan boshqa chiqimlarni o'qimasdan chiqish tamponini tozalashadi.

Odatda, mos keladigan chiqim Bekorning ichki bufferlaridan chiqariladi. Bunga nodavlat bayroqchasini kiritish bilan to'siq qo'yish mumkin. Ushbu bayroq eksperiment qilishda ayniqsa foydalidir (va eksperiment vaqtida qulaylik uchun "yo'q" deb qisqartirilishi mumkin).

Tegishli chiqdi (yoki eof yoki full_buffer) bilan bog'liq spawn idi expect_out (spawn_id) da saqlanadi.

Vaqtinchalik bayroq hozirgi kutish vaqtining o'zgaruvchisining qiymatini ishlatish o'rniga, quyidagi qiymatdan vaqt tugashi sifatida foydalanishni kutadi.

Odatiy bo'lib, naqshlar joriy jarayondan chiqarilgan chiqishga nisbatan mos keladi, ammo -i bayrog'i quyidagi spawn_id ro'yxatidan chiqarilgan chiqishni quyidagi naqshlarga (keyingi -igacha) mos tushadi deb e'lon qiladi. Spawn_id ro'yxati spawn_idlarning ajratilgan ro'yxatidan yoki spawn_idlarning bunday ro'yxatiga tegishli o'zgarmaydigan bo'lishi kerak.

Misol uchun, quyidagi misol, $ proc2 tomonidan berilgan spawn_id dan joriy jarayondan yoki "band", "muvaffaqiyatsiz" yoki "bekor parol" dan "bog'langan" kutmoqda.

kutish {-i $ proc2 band {puts busy \ n; exp_continue} -re "muvaffaqiyatsiz" parol bekor qilindi "bekor qilish bekor qilindi}

Any_spawn_id global o'zgaruvchining qiymati hozirgi kutilgan buyruqdagi boshqa barcha -i bayroqlar bilan atalgan spawn_idlarning naqshlariga mos kelish uchun ishlatilishi mumkin. Bir -i bayrog'idan spawn_id hech qanday shablonga ega bo'lmagan holda (ya'ni, darhol boshqa -i tomonidan amalga oshiriladi) any_spawn_id bilan bog'liq bo'lgan bir xil kutish buyrug'ida boshqa naqshlarga foydalanish mumkin .

-i bayrog'i, shuningdek, global o'zgaruvchining nomini o'zgartirishi mumkin, bu holatda o'zgaruvchining identifikatorlari ro'yxati uchun o'zgaruvchi o'qiladi. Argumentlar o'zgarganda har doim o'qiydi. Bu buyruqlar ijro etilayotganda I / U manbasini o'zgartirish usulini beradi. Spawn identifikatorlari bu tarzda "bevosita" o'stirish identifikatorlari deb ataladi.

O'chirish va davom ettirish kabi harakatlar nazorat qilish tuzilmalariga (ya'ni, proc uchun ) odatdagidek munosabatda bo'lishga olib keladi. Exp_continue buyrug'i odatdagidek qaytib kelmasdan turib , ijro etilishini davom ettirishga imkon beradi.

Bu ochiq-oydin ko'chadan yoki takroriy kutilgan so'zlardan qochish uchun foydalidir. Quyidagi misol, rloginni avtomatlashtirish uchun fragmentning bir qismidir. Explogcontinue rlogin parolni talab qilsa, ikkinchi kutish so'zini yozishni taqiqlaydi (tezda qo'ng'iroq qilish uchun).

\ n "send_user" \ n "yuborish" $ expect_out (1, string) \ r "stty ($, $ user) uchun $ {{password: {stty-echo send_user} echo exp_continue} noto'g'ri {send_user} "noto'g'ri parol yoki hisob \ n" chiqish vaqti tugashi} {send_user "$ host xaqida vaqt tugashi bilan \ n" exit} eof {send_user \ "xostga ulanish muvaffaqiyatsiz tugadi: $ expect_out (buffer)" exit} - $ $ chaqirish}

Misol uchun, quyidagi fragment foydalanuvchi ko'rsatmalariga to'liq avtomatlashtirilgan ta'sir o'tkazish uchun yordam berishi mumkin. Bunday holatda, terminal xomashyo rejimiga tushiriladi. Agar foydalanuvchi "+" tugmachasini bosib ketsa, o'zgaruvchining miqdori oshiriladi. Agar "p" tugmasini bosilsa, jarayonga bir nechta qaytarma yuboriladi, ehtimol uni qandaydir tarzda siqib chiqaradi va "i" foydalanuvchini bu jarayon bilan o'zaro aloqada bo'lishga imkon beradi, bu esa buyruqni skriptdan o'chirishga imkon beradi. Har holda, exp_continue oqim joriy amalni bajarishdan so'ng naqshni moslashtirishni davom ettirishga imkon beradi.

stty raw -echo expect_after {-i $ user_spawn_id "p" {jo'natish "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {interact; exp_continue} "chiqish" exit}

Odatiy bo'lib, exp_continue takrorlash taymerini qayta tiklaydi . Agar " exp_continue" -continue_timer bayrog'i bilan chaqirilsa, taymer qayta ishga tushirilmaydi.

kutilgan taxminan [expect_args]
kutish va beklentilerden kelib chiqadigan naqshlar mos keladigan bo'lsa, kutish naqshini ishlatishdan tashqari, expect_b oldin bir xil ishlaydi. Qo'shimcha ma'lumot olish uchun, expect_before buyrug'ini ko'ring.

expect_background [expect_args]
kutilganidek , bir xil argumentlarni oladi, ammo darhol qaytaradi. Namunalar yangi kirish kelganda har doim tekshiriladi. Vaqt tugashi va standartni bekor qilish bekor qilish va so'zsiz o'chiriladi . Aks holda, expect_background buyrug'i, kutilgandek, expect_before va expect_after naqshde foydalanadi.

Kutilayotgan natijalar kutilayotganda , bir xil spawn ID uchun fonni qayta ishlash bloklanadi. Harakat tugallangach, fonni qayta ishlash to'xtatiladi. Fonni qayta ishlash bloklangan bo'lsa, bir xil spawn idida (oldingi holat) kutish mumkin .

Kutish bekor qilinishidan oldin kutish mumkin emas. ma'lum bir spawn id uchun expect_background bir xil spawn id bilan yangi expect_background e'lon qilib o'chiriladi. Beklentiyani bekor qilish noaniqligicha qoladi va berilgan spawn idini fonda naqshlarga mos keladigan qobiliyatdan olib tashlaydi.

kutishdan oldin [expect_args]
kutilganidek , bir xil argumentlarni oladi, ammo darhol qaytaradi. Birinchidan , xuddi shu spawn id bilan oldindan kutilgan naqshli-harakatlar juftliklari quyidagi kutilgan buyruqlar uchun yopiq tarzda qo'shiladi. Agar naqshinka mos keladigan bo'lsa, u kutilganidek buyruqdek o'zini ko'rsatganidek munosabatda bo'ladi va shu bilan bog'liq bo'lgan korxona kutilgan kontekstda bajariladi. Ikkala kutilgan va oldindan kutilgan naqshlar mos keladigan bo'lsa, oldindan kutish naqsh ishlatiladi.

Hech qanday tartib belgilanmagan bo'lsa, spawn idi biron bir naqsh uchun tekshirilmaydi.

Bir -i bayrog'i tomonidan bekor qilinmaguncha, oldindan kutish kerak bo'lgan naqshlar expect_before buyrug'i bajarilgan vaqtda aniqlanadi (uning naqshlari mos kelmasa).

-info bayrog'i oldindan kutilgan natijalarni qayerga almashtirishini kutadi . Odatiy bo'lib, joriy spawn ID haqida xabar beradi. Ushbu spawn ID haqida ma'lumot uchun ixtiyoriy spawn id spesifikatsiyasi berilishi mumkin. Masalan

expect_before -info -i $ proc

Ko'pincha spawn id spesifikatsiyasi berilishi mumkin. Bayroq - bevosita spesifikalardan kelib chiqqan bevosita spawn identifikatsiyasini bekor qiladi.

Spawn id spetsifikatsiyasi o'rniga, "-all" bayrog'i "-info" ning barcha urug'lik identifikatorlari haqida xabar berishiga olib keladi.

-info bayrog'i chiqishi expect_before argumenti sifatida qayta ishlatilishi mumkin.

kutilganlar [expect_args]
kutilgandek, lekin u / dev / tty (masalan, foydalanuvchi tugmachalari) belgilarini o'qiydi. Odatiy tarzda o'qish o'qish rejimida amalga oshiriladi. Shunday qilib, chiziqlar ularni ko'rishni kutish uchun qaytib kelishi kerak. Bu stty orqali o'zgartirilishi mumkin (quyidagi stty komandasiga qarang).

expect_user [expect_args]
kutilgandek bo'lsa-da, stdin-dan belgilarni o'qiydi (ya'ni foydalanuvchidan klavishalar). Odatiy tarzda o'qish o'qish rejimida amalga oshiriladi. Shunday qilib, chiziqlar ularni ko'rishni kutish uchun qaytib kelishi kerak. Bu stty orqali o'zgartirilishi mumkin (quyidagi stty komandasiga qarang).

vilkalar
yangi jarayonni yaratadi. Yangi jarayon - joriy kutish jarayonining aniq nusxasi. Vazifaga muvaffaqqiyat 0 yangi (bola) jarayoniga qaytadi va bola jarayonining jarayon identifikatorini ota-ona jarayoniga qaytaradi. Muvaffaqiyatsiz (har doim resurslarning etishmasligi, masalan, almashtirish maydoni, xotira) tufayli, fork yuqori protsentga -1 qaytaradi va hech qanday bola jarayoni yaratilmaydi.

Forked jarayonlar, asl jarayoni kabi, chiqish buyrug'i orqali chiqiladi. Forked jarayonlar log fayllariga yozish uchun ruxsat etiladi. Agar siz xatolarni tuzatishni o'chirib qo'ysangiz yoki jarayonlarning ko'pchiligiga kirsangiz, natija bosh karıştırıcı bo'lishi mumkin.

Ba'zi pty dasturlar bir nechta kitobxonlar va yozuvchilar tomonidan bir vaqtning o'zida chalkashishi mumkin. Shunday qilib, yumshatilish jarayonlari oldidan kesishning eng xavfsiz usuli hisoblanadi.

o'zaro bog'lanishi [string1 body1] ... [stringn [bodyn]]
foydalanuvchilarga joriy jarayonni boshqarish imkonini beradi, shu bilan tugmachalar bosib yuboriladi va joriy jarayonning stdout va stderr qaytariladi.

String-body juftlari argumentlar sifatida ifodalanishi mumkin, bu holda mos keladigan string kiritilganda tananing bajarilishi. (Odatiy bo'lib, mag'lubiyat joriy jarayonga yuborilmaydi.) Oxirgi tana kam bo'lsa tarjimon buyrug'i qabul qilinadi.

Agar barcha o'zaro ta'siri bayonotiga argumentlar bir nechta qatorni talab qilsa, har bir dalilni teskari egri chiziq bilan bekor qilishni oldini olish uchun barcha argumentlarni "birlashtirilishi" mumkin. Ushbu holatda, odatdagidek Tcl takomillashtirilishi braxiyalarga qaramasdan sodir bo'ladi.

Misol uchun, quyidagi buyruq belgilangan quyidagi string-body juftlari bilan o'zaro bog'lanadi: ^ Z tugmasi bosilganda, Bekor to'xtatiladi. (The -valet bayrog'i terminal rejimlarini tiklaydi.) ^ A tugmachasini bosgan holda, foydalanuvchi "sizni" A-nazorat " yozganligini va jarayonni ^ A yuborganini ko'radi. $ Tugmasini bosilganda, foydalanuvchi tarixni ko'radi. ^ C ni bossangiz, kuting . Agar "foo" kiritilsa, foydalanuvchi "bar" ni ko'radi. ~ ~ Tugmachasini bosilganda, Interpretterni kutish interaktiv tarzda ishlaydi.

set CTRLZ \ 032 o'zaro ta'sir {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "siz tekshiruvni A \ n"; "\ 001"} $ {send_user "Sana [soat formati] [soat soniyalari]]."} \ 003 chiqish foo {send_user "bar"}} ~~}

Satr-tana juftliklarida, satrlarni argumentlar sifatida berilgan tartibda mos keladigan. Qisman mos keladigan satrlar qolgan jarayonni oldindan kutish bilan joriy jarayonga yuborilmaydi. Keyinchalik belgilar kiritilgan bo'lishi mumkin, shunday qilib, boshqa o'yin bo'lishi mumkin emas, faqat mag'lubiyatning bir qismi boshqa o'yinni boshlashning imkoni bo'lmagan jarayonga yuboriladi. Shunday qilib, qisman o'yinlarning pastki chiziqlari keyinchalik mos kelishi mumkin, agar mos kelishga harakat qiladigan dastlabki satr oxir-oqibat bajarilmasa.

Odatiy ravishda, mag'lubiyatga mos kelmasligi vahshiy kartalarsiz aniqlanadi . (Aksincha, kutilgan buyruq sukut bo'yicha glob uslubi naqshlarini qo'llaydi.) -ex bayrog'i, boshqacha usulda o'zaro bog'lanadigan bayroqlarni mos keladigan naqshlarni himoya qilish uchun ishlatilishi mumkin. "-" bilan boshlangan har qanday naqsh bu tarzda himoyalangan bo'lishi kerak. ("-" bilan boshlangan barcha satrlar kelgusi variantlar uchun saqlanadi.)

- Bayroq bayrog'i regexp tarzi namunasi sifatida talqin qilinishi kerak. Bunday holda, taalukli pastki chiziqlar o'zgarmaydigan interact_out-da saqlanib qoladi, natijada kutilgan natijani kutishadi . -Ishlar bayroqi ham xuddi shunday qo'llab-quvvatlanadi.

Eof nusxasi fayl oxirida bajariladigan ishni taqdim etadi. Ayrim eof naqshde - tashqi bayroqni kuzatish mumkin, bu holda chiqdi yozayotganda eof aniqlansa, unga mos keladi. Oddiy " eof" harakati "qaytishi" dir, shu sababli o'zaro aloqalar oddiygina EOFga qaytariladi.

Vaqt tugashi vaqt tugashi (sekundlarda) va ma'lum bir vaqt uchun hech qanday belgi o'qilmaguncha amalga oshiriladigan ish. Vaqt tugashi naqshlari eng so'nggi belgilangan jarayon uchun amal qiladi. Birlamchi vaqt tugashi yo'q. Maxsus o'zgaruvchi "takrorlash" ( kutish buyrug'i bilan ishlatiladi) bu vaqt tugashiga ta'sir qilmaydi.

Misol uchun, quyidagi iborani bir soat davomida hech narsa yozmagan, ammo tez-tez tizim xabarlarini oladigan foydalanuvchilarni avtologografi uchun ishlatish mumkin:

o'zaro ta'sir o'tkazish $ user_spawn_id timeout 3600 return -output \ $ spawn_id

Agar naqsh kalit so'z null bo'lsa va nulls ( allow_nulls buyrug'i bilan) ruxsat berilgan bo'lsa, tegishli ASCII 0 taalukli bo'lsa, tegishli korxona amalga oshiriladi. Glob yoki regexp naqshlari orqali 0 byte taalukli bo'lishi mumkin emas.

Flag -write bilan bir naqshni oldindan belgilash interact_out (spawn_id) o'zgaruvchining naqshga (yoki eof) mos keladigan spawn_idga o'rnatilishiga sabab bo'ladi.

O'chirish va davom ettirish kabi harakatlar nazorat qilish tuzilmalariga (ya'ni, proc uchun ) odatdagidek munosabatda bo'lishga olib keladi. Biroq, qaytish sabablari uning qidiruvchisiga qaytish uchun o'zaro ta'sir qiladi, inter_return esa uning qidiruvchisiga qaytish imkonini beradi. Misol uchun, agar "proc foo" so'zi interact deb ataladigan bo'lsa, keyin inter_return'ning bajarilishini amalga oshirsa , proc foo qaytadi. (Agar interaktiv tarjimon interaktiv tarzda matnni qaytarib yozishni davom ettiradigan bo'lsa, inter_return interaktiv telefon orqali qo'ng'iroq qiluvchiga qaytib kelishiga sabab bo'ladi.)

O'zaro muloqot chog'ida xam rejimi barcha belgilar joriy jarayonga o'tkazilishi uchun ishlatiladi. Agar joriy operatsiya ishni nazorat qilish signallarini yakalayamasa, to'xtatish signali yuborilsa to'xtaydi (odatiy ravishda ^ Z). Qayta ishga tushirish uchun davom etish signalini yuboring (masalan, "o'ldirish-SAP"). Agar haqiqatan SIGSTOPni bunday jarayonga yuborishni istasangiz, (oldin ^ Z), dastlab uqalashni ko'rib chiqing va dasturni ishga tushiring. Boshqa tomondan, SIGSTOPni o'zini kutish uchun jo'natish bo'lsangiz, avval tarjimonni tering (ehtimol, qochish belgilaridan foydalaning) va keyin ^ Z ni bosing.

String-body juftlari tarjimonga kirishni taqiqlash va buyruqlarni interaktiv tarzda bajarish uchun qisqartma sifatida ishlatilishi mumkin. Avvalgi terminal rejimi simli-tana jufti tanasi bajarilayotganda ishlatiladi.

Tezlik uchun xatti-harakatlar sukut bo'yicha xom rejimda bajariladi. Chiqariladigan bayrog'i terminalni o`zaro ta'sir o'tkazishdan oldingi rejimga o`zgartiradi (har doim pishirilgan rejim). Tartibni yoqilganda kiritilgan belgilar (ayrim tizimlarda terminalda drayverining baxtsiz xususiyati) yo'qolishi mumkinligiga e'tibor bering. Foydalanishning yagona sababi, agar sizning harakatingiz pishirilgan rejimda ishlashga bog'liq bo'lsa.

-Xech bayrog'i, quyidagi naqshga mos keladigan belgilarni har bir belgi o'qilganligi uchun yaratilgan jarayonga qaytarib yuboradi. Bu foydalanuvchi qisman kiritilgan naqshlardan fikrlarni ko'rishga muhtoj bo'lganida foydali bo'lishi mumkin.

Agar naqsh aks ettirilsa, lekin oxirida mos kelmasa, belgilar chop etilgan jarayonga yuboriladi. Chiqib ketgan jarayonlar ularni echishda bo'lsa, foydalanuvchi belgilarni ikki marta ko'radi. - Bu , ehtimol, foydalanuvchi naqshni bajarishning imkoni bo'lmaganda vaziyatga mos keladi. Misol uchun, quyidagi paragraf rftp-dan, yineluvchi-ftp skriptidan iborat bo'lib, unda joriy katalogni o'z-o'zidan yozib olish, qo'yish yoki ro'yxatga olish uchun ~ g, ~ p yoki ~ l kiritish talab qilinadi. Ular odatdagi FTP buyruqlaridan juda uzoqda, foydalanuvchining xatosiz tashqari boshqa hech narsa yozilmasligi ehtimoldan yiroqdir. Bu holatda, ehtimol, ular natijalarni baribir rad etadi.

interaktiv {-cho ~ g {getcurdirectory 1} -cho ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}

-Qatti- bayroq bayrog'i belgilar o'qilayotganda quyidagi naqshga mos keladigan belgilarni chiqish jarayoniga yuboradi.

Agar dastur echo naqshni qaytarib berishni xohlasangiz, bu sizga yordam beradi. Misol uchun, bir kishi qaerga qo'ng'iroq qilayotganini kuzatib borish uchun quyidagi usullardan foydalanish mumkin (Hayes uslubidagi modem). Har doim "atd" ko'rinishida buyruq fayli qolgan qatorni qayd qiladi.

Tranzaktsiya lognumber {} {interact -nobuffer -re "(. *) \ r" returns put $ $ log "[soat formati [soat soniyalari]]: dialed $ interact_out (1, string)"} interact -nobuffer "atd" lognumber

Interaktiv jarayonda log_userning avvalgi ishlatilishi e'tiborga olinmaydi. Ayniqsa, interaktiv chiqishi logotipga kirishni majbur qiladi (standart chiqishga yuboriladi), chunki foydalanuvchi ko'r-ko'rona ta'sir o'tkazishni istamaydi.

-o bayrog'i, joriy jarayonning chiqishiga quyidagi key-body juftlarini qo'llashga sabab bo'ladi. Bu, masalan, telnet seansi vaqtida kiruvchi belgilarni jo'natadigan xostlar bilan ishlashda foydali bo'lishi mumkin.

Odatiy bo'lib, interaktiv foydalanuvchi stdin yozishni va kutish jarayonining o'zi stdout-ni o'qishini kutadi. -u bayrog'i ("foydalanuvchi" uchun) foydalanuvchini o'z argumenti bilan ( jarayoni boshlanadigan id bo'lishi kerak) deb nomlanadi.

Bu esa, o'zaro bog'liq bo'lmagan ikki jarayonning bir-biriga birlashtirilishiga imkon beradi. Disk raskadrovka qilishga yordam berish uchun, Diagnostikani kutish har doim stderrga (yoki ma'lum kirish va disk raskadrovka ma'lumotlariga stdout) o'tadi. Shu sababli tarjimon komandasi stdindan interaktiv tarzda o'qiydi.

Misol uchun, quyidagi parcha login jarayonini yaratadi. Keyin foydalanuvchi (ko'rsatilmaydi) ni teradi va nihoyat ikkalasini bir-biriga ulaydi. Albatta, har qanday jarayon login uchun o'zgartirilishi mumkin. Misol uchun, qobiq foydalanuvchi hisob va parol berishdan ishlashga imkon beradi.

spawn login kirishni o'rnatish $ spawn_id spawn tip modem # foydalanuvchini qayta terish interact-loginga kirish uchun foydalanuvchi bilan ulanish -u $ login

Chiqishni bir nechta jarayonlarga jo'natish uchun har bir spawn id ro'yxatini - "flag" belgisi bilan oldindan belgilang. Chiqarishning bir nechta chiqish identifikatorlari uchun kirish -input bayrog'i bilan oldindan belgilangan spawn identifikatorlari ro'yxati bilan aniqlanishi mumkin . (Har ikkisi ham - kirish va chiqish, ro'yxatning har qanday bekatida bekor qilingan buyruqda -i bayrog'i bilan bir xil shaklda bo'lishi mumkin, bundan tashqari, any_spawn_id o'zaro ta'sirga ega emas). Ushbu kirish uchun quyidagi bayroqlar va strings (yoki naqsh) kirish belgisi paydo bo'ladi. Agar hech qanday ko'rsatkich paydo bo'lmasa, "input $ user_spawn_id -output" degan ma'noni bildiradi. (Shunga o'xshab, -modda mavjud bo'lmagan naqshlar bilan). Agar bitta ko'rsatkich ko'rsatilgan bo'lsa, u $ user_spawn_idni bekor qiladi. Agar ikkinchi ko'rsatkich ko'rsatilgan bo'lsa, u $ spawn_idni bekor qiladi. Qo'shimcha kirish bayroqlari ko'rsatilishi mumkin.

Ikkala nazarda tutilgan kirdi jarayonlari o'z chiqishlarini $ spawn_id va $ user_spawn_id (teskari) deb belgilashga majbur. Agar " input" bayrog'i - tashqi bayroq bo'lmasa paydo bo'lsa, ushbu jarayondan olingan belgilar o'chiriladi.

-i bayrog'i joriy spawn_id-ning o'rnini almashtirmaydi, chunki boshqa hech qanday -put yoki -output bayroqlari ishlatilmaydi. A -i bayrog'i - bayroqni bildiradi.

Bevosita spawn identifikatorlarini ishlatib, ta'sir o'tkazish jarayonlarini o'zgartirish mumkin. (Bevosita o'stirish identifikatorlari kutilgan buyruqlar bo'limida tavsiflanadi.) Bevosita spawn identifikatorlari -i, -u, -tizim yoki -tiz bayroqlari bilan belgilanishi mumkin.

tarjimon [args]
foydalanuvchining interaktiv ravishda kutish va TCL buyruqlaridan foydalanishga sabab bo'ladi. Har bir buyruqning natijasi yoziladi.

O'chirish va davom ettirish kabi harakatlar nazorat qilish tuzilmalariga (ya'ni, proc uchun ) odatdagidek munosabatda bo'lishga olib keladi. Biroq, qaytarish tarjimonni qidiruvchiga qaytib kelishiga olib keladi, inter_return interpreter uning chaqiruvchisiga qaytish imkonini beradi. Misol uchun, agar "proc foo" so'zi tarjimon deb ataladigan bo'lsa, u holda inter_returnni amalga oshirgan , proc foo qaytadi. Boshqa biron bir buyruq tarjimonga yangi buyruqlar berishni davom ettirishga olib keladi.

Odatiy bo'lib, taklif ikkita butun sonni o'z ichiga oladi. Birinchi tamsayı, baholash to'plamining chuqurligini tavsiflaydi (ya'ni, Tcl_Eval necha marta chaqirilgan). Ikkinchi tamsayı TCL tarixini identifikatori. Buyruq taklif qiymati "prompt1" deb nomlangan protsedurani belgilash orqali belgilanishi mumkin. Agarda ochiq takliflar, parenslar, braxiyalar yoki qavslar bo'lsa, yangi satrda ikkinchi darajali taklif ("+>" sukut bo'yicha) beriladi. Ikkinchi chaqiruv "prompt2" deb nomlangan protsedurani belgilab qo'yilishi mumkin.

Tarjimon vaqtida, qidiruvchining xom rejimidan foydalangan bo'lsa ham, pishirilgan tartib ishlatiladi.

Agar stdin yopilsa, bayroqni ishlatmasa, tarjimon qaytib keladi, bu holda keyingi dalillar chaqiriladi.

log_file [args] [[-a] fayl]
Agar fayl nomi berilgan bo'lsa, log_file faylga seans transkriptini yozadi (shu nuqtadan boshlab). log_file hech qanday dalil bo'lmasa, qaydni to'xtatadi. Avvalgi jurnal fayli yopiq.

Domen nomining o'rniga, Tcl fayli identifikatori -open yoki -leaveopen bayroqlari yordamida berilishi mumkin. Bu spawn buyrug'iga o'xshaydi. (Batafsil ma'lumot uchun spawn-ga qarang.)

-A flag flag log_user buyrug'i tomonidan bostirilgan jurnalga yozilishga majbur .

Odatiy bo'lib, log_file buyrug'i kirishni o'chirishga emas, balki bir seansda bir necha marotaba yopilishga imkon berish uchun eski fayllarga qo'shiladi . Fayllarni qisqartirish uchun - noqonuniy bayroqni ishlating .

-info bayrog'i, log_file-ga berilgan eng oxirgi no-info argumentlarining tavsifini qaytaradi.

log_user-info | 0 | 1
Odatiy bo'lib, jo'natish / kutish suhbati stdout (va ochiq bo'lsa, logfile) uchun saqlanadi. Stdout-ga kirish "log_user 0" buyrug'i bilan o'chirib qo'yilgan va "log_user 1" tomonidan qayta yoqilgan. Kundalik faylga kirish saqlanmaydi.

-info bayrog'i, log_user-ga berilgan eng oxirgi no-info argumentlarining tavsifini qaytaradi.

match_max [-d] [-i spawn_id] [sizga]
tampon hajmini (baytlarda) ichki sifatida kutish orqali belgilaydi. Hech qanday o'lchamli dalillar bo'lmasa, joriy o'lcham qaytariladi.

-d bayrog'i bilan, standart o'lcham belgilanadi. (Boshlang'ich parametr 2000). -i belgisi bilan o'lchami nomlangan spawn identifikatori uchun o'rnatiladi, aks holda u joriy jarayon uchun o'rnatiladi.

joylashtirish [- # spawn_id] [- # spawn_id] [...] dastur [args]
Joriy dasturning o'rnini bosuvchi "program args" ni amalga oshiradi, bu tugaydi. Yalang'och chiziqli argument buyruqlar nomining oldida chiziqni bir login kabuğu kabi siqadi. Barcha spawn_ids argument deb ataladiganlar tashqari yopiladi. Ular nomlangan fayl identifikatorlari ustiga joylashtiriladi.

Spawn_ids identifikatorlari yangi dastur uchun meros olish uchun identifikatorlarni identifikatsiyalash uchun identifikatsiyalanadi. Misol uchun, quyidagi satr shaxmatni boshqaradi va uni hozirgi jarayon bilan boshqarishga imkon beradi, masalan, shaxmat ustasi.

qoplama -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id shaxmat

Bu "interaktiv -u" dan ko'ra samaraliroqdir, ammo kutish jarayoni endi nazorat ostida bo'lmagani uchun dasturlashtirilgan o'zaro ta'sirlarni amalga oshirish qobiliyatini qurbon qiladi.

Hech bir nazorat terminali mavjud emasligini unutmang. Shunday qilib, agar siz standart kirishni uzib qo'ygan bo'lsangiz yoki uni qayta ishlasa, ishni nazorat qilish (kabuklar, kirish va hokazo) dasturlari to'g'ri ishlamaydi.

parite [-d] [-i spawn_id] [qiymat]
paritivani saqlab qolish yoki ajratish jarayonidan chiqishi kerakligini belgilaydi. Agar qiymat nol bo'lsa, parite yo'qoladi, aks holda uni echib bo'lmaydi. Qiymat argumenti bo'lmagan holda, joriy qiymat qaytariladi.

-d bayrog'i bilan, standart parite qiymati o'rnatiladi. (Boshlang'ich sukut 1, ya'ni, parite yo'q emas.) -i bayroq bilan parite qiymati nom berilgan spawn ID uchun o'rnatiladi, aks holda u joriy jarayon uchun o'rnatiladi.

remove_nulls [-d] [-i spawn_id] [qiymat]
null taqqoslashdan avval yoki bekor qilingan yoki interact_out o'zgarmaydiganida nulllarning saqlanib qolishi yoki chiqarib yuborilgan jarayonlarni chiqarib tashlashini belgilaydi. Agar qiymat 1 bo'lsa, bo'shliklar olib tashlanadi. Agar qiymat 0 bo'lsa, null yo'q qilinadi. Qiymat argumenti bo'lmagan holda, joriy qiymat qaytariladi.

-d bayrog'i bilan, asl qiymati o'rnatiladi. (Boshlang'ich sukut 1, ya'ni nulllar o'chiriladi.) -i bayroq bilan qiymat nom berilgan spawn ID uchun o'rnatiladi, aks holda u joriy jarayon uchun o'rnatiladi.

Null yo'qmi yoki yo'qmi, kuting null baytni jurnalga va stdoutga yozib qo'yadi.

[-flags] satrini yuboring
Joriy jarayonga mag'lubiyat yuboradi. Masalan, buyruq

"salom dunyosi" yuboring

belgilar, helloworld-ni joriy jarayonga yuboradi. (TCL o'zboshimchalik bilan murakkab stratlarini yaratish uchun printf- o'xshash buyruqni ( format deb ataladi) o'z ichiga oladi.)

Belgilar darhol yuboriladi, biroq buferli kirish usullari dasturlarni qaytarish belgisi yuborilguncha belgilarni o'qiy olmaydi. Qaytish belgisi "\ r" deb ataladi.

Bayroq, keyingi dalilni bayroq o'rniga mag'lubiyatga aylantirilishini majbur qiladi. Har qanday mag'lubiyatga "-" avvalgi bayroqqa o'xshab ko'rinishi mumkin. Bu tasodifiy bayroqlarga o'xshash bo'lganlar tomonidan ishlamasdan, o'zgarmaydigan satrlarni belgilash uchun ishonchli mexanizmni ta'minlaydi. ("-" bilan boshlangan barcha satrlar kelgusi variantlar uchun saqlanadi.)

-i bayrog'i mag'lubiyatga berilgan spawn_id-ga yuborilishini e'lon qiladi. Spawn_id - user_spawn_id bo'lsa va terminal xom rejimda bo'lsa, satrda yangi satrlarni qaytarish uchun yangi qatorlar ketma-ketligiga tarjima qilinadi, ular terminali pishirilgan rejimda bo'lgani kabi ko'rinadi. Chiqarish bayrog'i bu tarjimani o'chirib qo'yadi.

Noyob bayroq null belgilarni yuboradi (0 bayt). Odatiy bo'lib, bir null yuboriladi. To'liq sonli nulllarning yuborilishini ko'rsatish uchun-null-ga amal qilishi mumkin.

-Break bayrog'i buzilmaydi. Spawn id "spawn -open" orqali ochilgan tty qurilmasiga ishora qilsa, bu faqat mantiqan to'g'ri keladi. Agar siz uchi kabi jarayonni boshdan kechirgan bo'lsangiz, siz tanaffusni yaratish uchun maslahatlaringizdan foydalanishingiz kerak.

" -s flag" chiqishi "asta-sekin yuboriladi, shuning uchun kompyuter hech qachon bir tamponni tashiydigan inson uchun mo'ljallangan kirish tamponini tashkillashtiradigan umumiy vaziyatdan qochishadi. Ushbu chiqish ikki elementli ro'yxatni oladi "send_slow" o'zgarmaydigan qiymati bilan nazorat qilinadi. Birinchi element atamani yuborish uchun baytlarning sonini tavsiflaydigan tamsayı hisoblanadi. Ikkinchi element atomik yuboradigan soniyalar sonini belgilaydigan haqiqiy son. Misol uchun, "set_ send_slow {10 .001}" yuborilgan har bir 10 ta belgidan 1 millisekundga bo'lgan satrlarni yuborish uchun "yuborish" ni majburlaydi.

Bayroqning bayroqdor kuchlari, aslida insonni yozishga o'xshash bir necha marta jo'natiladi. Belgilar orasida inson kabi kechikishlar paydo bo'ladi. (Algoritm Weibull taqsimotiga asoslanib, bu muayyan ilovaga mos keladigan o'zgarishlarga asoslanadi). Bu chiqish besh elementli ro'yxatni oladi "send_human" o'zgarmaydigan qiymati bilan boshqariladi. Dastlabki ikkita elementlar sekundiga o'rtacha interarrival belgilar vaqtidir. Birinchidan, sukut bo'yicha ishlatiladi. Ikkinchidan, so'zlashuvlarda, ba'zan bunday o'tishlarda yuzaga keladigan nozik pauzalarni simüle qilish uchun ishlatiladi. Uchinchi parametr o'zgaruvchanlikning o'lchovidir, bu erda .1 juda o'zgaruvchan, 1 juda o'zgaruvchan, va 10 mutlaqo o'zgarmasdir. Chegaralar cheksiz 0 ga teng. Oxirgi ikki parametr, navbati bilan, minimal va maksimal interarrival vaqt. Minimal va maksimal son ishlatiladi va oxirgi marta "klip" ishlatiladi. Minimal va maksimal klip etarli qiymatlar bo'lsa, o'rtacha o'rtacha o'rtacha qiymatdan ancha farq qilishi mumkin.

Misol tariqasida, quyidagi buyruq tezkor va izchil bir yozuvchini uyg'otadi:

send_human {.1 .3 1 .05 2} send -h "Men och emasman, tushlik qilaylik."

Quyoshdan tashqariga chiqqandan so'ng, quyida keltirilgan narsalar ko'proq mos bo'lishi mumkin:

send_human {.4 .4 .2 .5 100} jo'nating -h "Yaxshi partiya tuhmat kechasi!"

Xatoliklarni tuzatish holatlarini o'zingizning xatolaringiz va to'g'rilagichlaringizni yuborishingiz mumkin.

Nolli belgilar yuborish, uzatishni jo'natish, asta-sekinlik bilan chiqishni va inson tarzi ishlab chiqarishni majburlash uchun bayroqlar bir-biridan farq qiladi. Faqat so'nggi ko'rsatilganlar ishlatiladi. Bundan tashqari, null belgilar yoki tanaffuslar yuborish uchun bayroqlar bilan hech qanday mag'lubiyat argumenti ko'rsatilishi mumkin emas.

Birinchidan, bir jarayonni kutish yo'li bilan yuborishdan oldin yaxshi fikr. jarayoni boshlanishi kutiladi , jo'natish mumkin emas. Ayniqsa, agar jarayon boshlanmasidan oldin birinchi yuborilgan bo'lsa, ma'lumotlaringizni e'tiborsiz qoldirish xavfini boshqarasiz. Interaktiv dasturlarning boshlang'ich xohishi taklif qilmagan holatlarda, kechikish bilan quyidagicha yuborishingiz mumkin:

# Xakerlar qanday qilib buzib tashlanish haqida maslahatlar berishdan qochish uchun # bu tizim tashqi parol so'ramaydi. # 5 soniya bekor qilish uchun bekor qiling telnet very.secure.gov uyqu 5 parolni yuboring

exp_send - yuboriladigan taxallusdir . Tk muhitida Expectk yoki boshqa kutish versiyasidan foydalanayotgan bo'lsangiz, Tk tomonidan boshqa maqsadda yuboring . exp_send muhitlar o'rtasidagi moslik uchun berilgan. Boshqa shunga o'xshash taxalluslar boshqa Bekor buyruqlari uchun taqdim etiladi.

send_error [-flags] satrlari
yuborilganga o'xshaydi, faqat chiqdi joriy jarayondan ko'ra stderrga yuboriladi.

Send_log [-] suzuvchi
faqat mag'lubiyatga faqat log fayliga jo'natiladi ( log_file ga qarang.). Hech qanday kundalik fayli ochiq bo'lmasa, argumentlarni e'tiborsiz qoldiradi.

send_tty [-flags] string
yuborilganga o'xshaydi, faqat chiqish jarayoni o'rniga / dev / tty ga yuboriladi.

send_user [-flags] string
yuborilganga o'xshaydi, faqat chiqish jarayoni hozirgi jarayondan ko'ra stdoutga yuboriladi.

uyqu soniya
berilgan son soniyalar uchun skriptni uxlashiga olib keladi. Soniyalar kasr sonlar bo'lishi mumkin. Bekor qilish vaqtida to'xtash vaqtida (agar Expectk dan foydalanilsa Tk voqealari) ishlaydi.

spawn [args] dasturi [args]
"program args" bilan ishlaydigan yangi jarayonni yaratadi. Stdin, stdout va stderr "Boshqa kutish" buyruqlar bilan o'qilishi va yozilishi uchun "Bekor" ga ulangan. Ulanish yopilsa yoki jarayon o'zi fayl identifikatorlaridan birini o'chirsa.

Jarayon spawn tomonidan boshlanganida, o'zgaruvchan spawn_id bu jarayonga ishora qiluvchi identifikatorga o'rnatiladi. Spawn_id tomonidan tavsiflangan jarayon "joriy jarayon " hisoblanadi. spawn_id ishni nazorat qilishni ta'minlaydigan o'qish yoki yozish mumkin.

user_spawn_id - foydalanuvchini bildiruvchi identifikatorni o'z ichiga olgan global o'zgaruvchidir. Masalan, spawn_id bu qiymatga o'rnatilganda, expect_user kabi harakat qilishini kutish kerak .

. Error_spawn_id - standart xatoga ishora qiluvchi identifikatorni o'z ichiga olgan global o'zgaruvchan. Masalan, spawn_id bu qiymatga o'rnatilganda, jo'natish send_error kabi ishlaydi.

tty_spawn_id - / dev / tty-ga ishora qiluvchi identifikatorni o'z ichiga olgan global o'zgaruvchidir. Agar / dev / tty mavjud bo'lmasa (masalan cron, ot yoki ommaviy skript), tty_spawn_id aniqlanmagan. Buni quyidagi kabi tekshirish mumkin:

Agar {[info vars tty_spawn_id]} {# / dev / tty mavjud bo'lsa} else {# / dev / tty mavjud emas # balki cron, batch yoki script}

spawn UNIX jarayon identifikatorini qaytaradi. Hech qanday protsedura yo'q bo'lsa, 0 qaytariladi. Spawn_out (tobe, ism) o'zgaruvchisi pty-to-slave qurilmasining nomiga o'rnatiladi.

Odatiy bo'lib, spawn buyruq nomi va argumentlarni aks ettiradi. - Bayroq bayrog'i bu ishni bajarishdan to'xtaydi.

- Mo''jizali bayroq konsoli chiqishi hosil bo'ladigan jarayonga qayta yo'naltiriladi. Bu barcha tizimlarda qo'llab-quvvatlanmaydi.

Ichki sifatida, Spawn bir pty dan foydalanadi, foydalanuvchi tty bilan bir xil tarzda ishga tushirildi. Bundan tashqari, barcha sozlamalar "aqldan" (stty (1) ga binoan) o'rnatiladi. Agar stty_init o'zgaruvchisi aniqlansa, u boshqa konfiguratsiya sifatida stty argumentlari uslubida talqin etiladi. Misol uchun, "set stty_init raw" yana xam rejimda boshlanadigan jarayonlar terminallarini ishga tushiradi. -nottsikciya foydalanuvchining tty asosida ishga tushirilishini bekor qiladi . -nottyinit "sane" ishga tushirilishini o'chiradi .

Oddiy qilib aytganda, moyakni bajarish uchun oz vaqt talab etiladi. Agar siz katta miqdordagi vaqtni ajratib olayotganingizni sezsangiz, ehtimol, yaroqsiz ptys bilan duch kelasiz. Ptitsda bir nechta sinovlar bajariladi, ular noto'g'ri ishlov beradigan narsalar bilan to'siq bo'ladi. (Ular har bir pedi uchun 10 soniyani oladi). -d variantida Running Expect (Bekor qilish) kutilgandagi kutilmagan vaziyatlarda bir nechta ptys bilan duch kelganligini ko'rsatadi. Agar siz ushbu ptyps biriktirilgan jarayonlarni o'ldirolmasangiz, faqatgina qayta ishga tushirishingiz mumkin.

Dastur exec (2) bajarilmasa (masalan, dastur mavjud bo'lmaganda) muvaffaqiyatsiz tugallanmasa, keyingi muloqotda xato xabari qaytariladi yoki dastur ishga tushirilgandek buyruqlar bekor qilinadi va xato xabari chiqqandan keyin ishlab chiqariladi. Bunday xatti-harakatlar gulchangni tatbiq etishning tabiiy natijasidir. Ichki sifatida, arqonlarni olib tashlang, shundan keyin spawned jarayoni spawn_id orqali muloqot qilishdan tashqari original kutish jarayoni bilan aloqa qilishning imkoni yo'q.

-open bayrog'i keyingi argumentni TCL fayl identifikatori sifatida talqin qilishiga sabab bo'ladi (ya'ni, ochiq-oydin qaytib kelgan). Spawn idi keyinchalik u hosil bo'ladigan jarayonlardek ishlatilishi mumkin. (Fayl identifikatori endi ishlatilmasligi kerak.) Bu siz xom asboblarni, fayllarni va quvurlarni chizish jarayonlarini pty yordamida ishlatmaslikka o'rgatadi. 0 bilan bog'liq jarayoni yo'qligini ko'rsatish uchun qaytariladi. Tugilgan jarayonga ulanish yopilganda, TCL fayl identifikatori ham shunday. -Avvalipen bayrog'i, xuddi shu bilan birga, ochiq- oydin o'chirish idi yopilgandan keyin ham faylni identifikatorning ochiq qoldirilishiga olib kelishi mumkin.

Bo'sh bayroq PT ning ochilishiga olib keladi, ammo hech qanday operatsiya amalga oshirilmaydi . 0 bilan bog'liq jarayoni yo'qligini ko'rsatish uchun qaytariladi. Spawn_id odatdagidek o'rnatiladi.

Spawn_out o'zgaruvchisi (tobe, fd) pty-ga mos keladigan fayl identifikatoriga o'rnatiladi. Bu "yopishqoq" yordamida yopilishi mumkin.

- Bayroq bayrog'i urchilgan jarayonda e'tiborsiz qoladigan signalni beradi. Aks holda, signallarni ko'rsatuv xatti-harakat qiladi. Har bir signal alohida bayroqni talab qiladigan signallardan tashqari, tuzoq buyrug'i sifatida nomlanadi.

strace darajasi
bajarilmasdan oldin chop etiladigan so'zlarni keltiradi. (Tcl-ning iz buyrug'i o'zgaruvchilarni kuzatadi.) Darajadagi qo'ng'iroqlar to'plamini kuzatib borish qanchalik past bo'lganligini ko'rsatadi. Masalan, quyidagi to'rtta qo'ng'iroq darajasini kuzatish paytida quyidagi buyruq kutilmoqda , ammo ulardan hech biri pastda emas.

kutish -c "strace 4" skript.exp

The -info bayrog'i, berilgan eng yangi noan'anaviy dalillarning tavsifini qaytarishga yordam beradi.

stty args
tashqi stty buyrug'iga o'xshash terminalda rejimlarini o'zgartiradi.

Odatiy bo'lib, nazorat terminaliga kirish mumkin. Boshqa terminallarga "Buyurtmaning natijasi sifatida statusni qaytarish uchun so'rovlar" orqali murojaat qilish mumkin, agar hech qanday holat so'ralmasa va nazorat terminaliga kirish imkoni bo'lmasa, xom va echo xususiyatlarining avvalgi holati keyinroq yuborilishi mumkin bo'lgan shaklda qaytariladi buyruq bilan ishlatiladi.

Misol uchun, xom yoki pishirilgan argumentlar terminalni xom holatga o'tkazdi . Argumentlar - pishirish yoki pishirish terminalni pishirilgan rejimga qo'ydi. Argumentlar echo-echo va terminalni o'z navbatida echo va noecho rejimiga qo'ydi.

Quyidagi misol echoingni qanday qilib vaqtinchalik o'chirib qo'yish kerakligini ko'rsatadi. Buni boshqa usulda ishlatish mumkin - ulardagi parollarni joylashtirishni oldini olish uchun avtomatik skriptlar. (Quyidagi EXPECT HINTS ostida batafsilroq muhokama qiling).

stty -echo send_user "Parol:" expect_user -re "(. *) \ n" parolni belgilash $ expect_out (1, string) stty echo

tizimi args
(1) terminalga buyruq sifatida yozilgandek kirdi. Qobiq tugamaguncha kutib turing . Sh-dan qaytish holati, exec ning qaytish holatini boshqaradigan tarzda bajariladi .

Stdin va stdout-ni skriptga yo'naltiruvchi execdan farqli o'laroq, tizim hech qanday yo'naltirilmaydi (mag'lubiyatning o'zi ko'rsatganidan tashqari). Shunday qilib, to'g'ridan-to'g'ri / dev / tty bilan gaplashish kerak bo'lgan dasturlardan foydalanish mumkin. Xuddi shu sababga ko'ra tizimning natijalari jurnalda qayd etilmaydi.

vaqt belgisi [args]
vaqt tamg'asini qaytaradi. Doimiy dalillarsiz, davrdan boshlab soniyalar soni qaytariladi.

-format bayrog'i qaytib keladigan, lekin strftime uchun POSIX qoidalariga muvofiq bajarilgan o'zgartishlar bilan tanishadi . Masalan,% a o'rniga qisqartirilgan ish kuni (masalan, Sat) o'zgartiriladi. Boshqalar:

% qisqartirilgan hafta ichidagi nom% A to'liq hafta ichidagi nom% b qisqartirilgan oy nomi% B to'liq oy nomi% c kun-vaqti: Wed Oktyabr 6 11:45:56 Oyning 1993 yilligi (01-31% H soati (00-23)% I soat (01-12)% j kun (001-366)% m oy (01-12)% M daqiqa (00-59)% p am yoki pm% S soniya (00-61) % u kun (1-7, Dushanba haftaning birinchi kuni)% U hafta (00-53, birinchi yakshanba birinchi haftaning birinchi kuni)% V hafta (01-53, ISO 8601 uslubi)% w kun (0- 6% W hafta (00-53, birinchi dushanba - birinchi haftaning birinchi kuni)% x Xayriya vaqti: Wed Oktyabr 6 1993% X time in: 23:59:59% y year (00-99) % Y yil ichida: 1993% Z zilzila vaqti (yoki aniqlanmasa, hech narsa yo'q) %% yalang'och foiz belgisi

Boshqa% spetsifikatsiyalar aniqlanmagan. Boshqa belgilar teginilmaydi. Faqat C tili qo'llab-quvvatlanadi.

Bu davrdan keyingi sonlar bayrog'i bir necha sekundni tashkil etadi. Aks holda, joriy vaqt ishlatiladi.

-gmt bayrog'i, GMT vaqtini ishlatish uchun vaqt tamg'asini chiqaradi. Bayroqsiz mahalliy vaqt zonasi ishlatiladi.

tuzoq [[buyruqlar] signallari]
berilgan buyruqlar kelgusidagi signallarning kelgusida olinishi bilan amalga oshiriladi. Buyruq global miqyosda amalga oshiriladi. Agar buyruq bo'lmasa, signal harakati qaytariladi. Buyruq SIG_IGN bo'lsa, signallar e'tiborga olinmaydi. Agar buyruq SIG_DFL mag'lubiyatga ega bo'lsa, signallar tizimning sukutiga olib keladi. signallari bitta signal yoki signallarning ro'yxati. Signallarni har bir signalga ko'ra raqamli yoki ramziy ravishda ko'rsatish mumkin (3). "SIG" prefiksi o'chirilishi mumkin.

Argumentlarsiz (yoki dalil-raqam), tuzoq hozir bajarilayotgan tuzoq buyrug'i signal raqamini qaytaradi.

Kodning bayrog'i komandaning dastlabki kodini ishlatishdan oldin Tcl kodining o'rniga qo'yilgan kodning o'rnini ishlatadi.

- O'tkazuvchi bayroq buyruq buyruq e'lon qilinishidan ko'ra, buyruq ishlayotgan vaqtda faol tarjimon yordamida baholanadi.

- Nomi bayroq tuzuvchi buyruq hozirda bajarilayotgan tuzoq buyrug'i signalining nomini qaytaradi.

-max bayrog'i, tuzilishi mumkin bo'lgan eng katta signal raqamini qaytarish uchun tuzoq buyrug'iga sabab bo'ladi.

Misol uchun, "trap {send_user" Ouch! "SIGINT" buyrug'i "Ouch!" har safar foydalanuvchi ^ C ni bosganda.

Odatiy bo'lib, SIGINT (odatda, ^ C ni bosib, hosil qilamiz) va SIGTERM kutish uchun Bekor qilishiga sabab bo'ladi. Bu kutish vaqtida sukut bo'yicha yaratilgan quyidagi tuzoqqa bog'liq.

tuzoqqa chiqish {SIGINT SIGTERM}

Debuggerni ishga tushirish uchun -D bayrog'idan foydalansangiz, SIGINT interaktiv tuzatuvchini ishga tushirish uchun qayta tanlanadi. Bu quyidagi tuzoqqa bog'liq:

tuzoq {exp_debug 1} SIGINT

Xato tuzatuvchi tuzuvchi EXPECT_DEBUG_INIT atrof-muhit o'zgaruvchisini yangi tuzoqqa buyruqqa o'rnatish orqali o'zgartirilishi mumkin.

Siz, albatta, ssenariyangizga tuzoq buyruqlar qo'shib, ularni ikkalasini ham bekor qilishingiz mumkin. Ayniqsa, o'zingizning "trap exit SIGINT" bo'lsa, bu xato tuzatuvchi tuzoqlarini bekor qiladi. Foydalanuvchilarning xato tuzatuvchiga ega bo'lishiga to'sqinlik qilishni istasangiz, bu foydali.

Agar siz SIGINT-dagi o'zingizning tuzoqingizni aniqlab olishni istasangiz-da, tuzatuvchiga tuzatishga hali-hanuz tuzatilsin:

agar {! [exp_debug]} {tuzuvchi mystuff SIGINT}

Shu bilan bir qatorda, boshqa bir signal yordamida xato ayıklayıcısını tuzoqqa mumkin.

tuzoq sizga SIGALRM uchun harakatni bekor qilishga imkon bermaydi, chunki bu ichki kutish uchun "Bekor qilish" uchun ishlatiladi. Chiqish buyrug'i SIGALRMni SIG_IGN ga o'rnatadi (ignore). Keyingi spawn buyruqlar paytida siz uni o'chirib qo'yishingiz mumkin ekan, uni qayta ishga tushirishingiz mumkin.

Qo'shimcha ma'lumot uchun signalni (3) ko'ring.

kuting [args]
Cho'kma jarayoni tugashiga qadar kechikishlar (yoki hech kim nomlanmagan bo'lsa) tugaydi.

kutish to'rtta aniq sonni qaytaradi. Birinchi tamsayı, kutilgan jarayonning pididir. Ikkinchi tamsayı, mos keladigan spawn ID'dir. Uchinchi tamsayt operatsion tizimda xato ro'y bergan bo'lsa yoki -1 bo'lsa, -1 bo'ladi. Uchinchi tamsayı 0 bo'lsa, to'rtinchi tamsayı, yumurtlama jarayoni tomonidan sodir bo'lgan holatdir. Uchinchi tamsayı -1 bo'lsa, to'rtinchi tamsayı, operatsion tizim tomonidan o'rnatilgan errno qiymati. Global o'zgaruvchan errorCode ham o'rnatiladi.

Qaytish qiymatining oxirida qo'shimcha elementlar kutish mumkin . Majburiy emas beshinchi element ma'lumotlar sinfini belgilaydi. Hozirgi vaqtda ushbu element uchun yagona imkoniyat CHILDKILLED, bu holda keyingi ikki qiymat C-uslubidagi signal nomi va qisqa matnli ta'rif.

-i bayrog'i jarayoni nom berilgan spawn_id (PROVIDENTID idi) ga mos kelishini kutish jarayonini e'lon qiladi. SIGCHLD-ning ishlov beruvchisi ichida, spawn-id -1 yordamida har qanday urug'lantirilgan jarayonni kutish mumkin.

" Bilib olish" bayrog'i kutilgan kutishni muvaffaqiyatli kutish bilan darhol qaytarishga sabab bo'ladi. Jarayon (keyingi) tugagach, aniq kutish kerak bo'lmasdan avtomatik ravishda yo'qoladi.

Kutish funktsiyasi "-i-1" argumentlarini ishlatib, uzluksiz jarayonni kutish uchun ham ishlatilishi mumkin. Spawned jarayonlar bilan ishlashdan farqli o'laroq, bu buyruq har qanday vaqtda bajarilishi mumkin. Qaysi jarayonni yig'ish borasida hech qanday nazorat yo'q. Shu bilan birga, qaytarish qiymati jarayon identifikatori uchun tekshirilishi mumkin.

KUTUBXONALAR

Kutilayotgan kutubxonalar uchun kutilgan ikkita kutubxonani avtomatik ravishda bilib kutish. Ular exp_library va exp_exec_library o'zgaruvchilaridagi kataloglar bilan belgilanadi. Har ikkisi ham boshqa skriptlar tomonidan ishlatilishi mumkin bo'lgan foydali fayllarni o'z ichiga olishi kerak.

exp_library arxitektura-mustaqil fayllarni o'z ichiga oladi. exp_exec_library arxitektura-qaram fayllarni o'z ichiga oladi. Tizimga qarab ikkala katalog ham to'liq bo'sh bo'lishi mumkin. $ Exp_exec_library / cat-buffers faylining mavjudligi sukut bo'yicha / bin / cat tamponlarini belgilaydi.

PRETTY-PRINTING

Chiroyli bosib chiqarish uchun skriptlarni kutish uchun vgrind ta'rifi mavjud. Expect taqsimlash bilan ta'minlangan vgrind ta'rifini to'g'ri deb qabul qilsangiz, uni quyidagi kabi ishlatishingiz mumkin:

vgrind-discpect fayli

MISOLLAR

Ko'pchilik, inson sahifasida tasvirlangan narsalarni birgalikda qanday qilib qo'yish kerakligi aniq ko'rinmaydi. Sizni o'qish va taqsimlashning kutubxona katalogidagi misollarni sinab ko'rishingizni iltimos qilaman. Ulardan ba'zilari haqiqiy dasturdir. Ba'zilari oddiy usullarni tushuntirib berishadi, va, albatta, er-xotinlar juda tez xarakatlar. INSTALL faylida ushbu dasturlarning tezkor ko'rinishi mavjud.

Kundaliklarni kutish (shuningdek, SEO-ga qarang) ham foydalidir. Ba'zi hujjatlarda Expectning avvalgi versiyalariga mos keladigan sintaksikdan foydalansangiz ham, u bilan birga keladigan mantiqiy fikrlar hali ham kuchga ega va bu odam sahifasiga qaraganda ancha batafsilroq ma'lumotga ega bo'ladi.

CAVEATS

Kengaytmalar Bekor buyruqlari nomlari bilan to'qnashishi mumkin. Misol uchun, jo'natish Tk tomonidan boshqa maqsadlar uchun belgilanadi. Shu sababli, Bekor buyruqlar ko'pchiligi "exp_XXXX" sifatida ham mavjud. "Exp", "inter", "spawn" va "timeout" bilan boshlangan buyruqlar va o'zgaruvchilar boshqa taxalluslar yo'q. O'rmonlar orasidagi bu moslik zarur bo'lsa, kengaytirilgan buyruqlar nomlarini ishlating.

Kutish , qamrab olishning ancha liberal nuqtai nazariga ega. Ayniqsa, " Expect" dasturiga xos buyruqlar bilan o'qiladigan o'zgaruvchilar avvalo mahalliy miqyosdan izlashadi va agar topilmasa global miqyosda. Masalan, bu siz kutgan foydalanadigan har bir protsedura bo'yicha "global takrorlash" joylashtirish zaruratini bekor qiladi. Boshqa tomondan, yoziladigan o'zgaruvchilar doimo mahalliy miqyosda ("global" buyruqlar berilmagan bo'lsa). Buning sababi eng ko'p tarqalgan muammo - bu protsedurada spawn bajarilishi. Jarayon tashqarisida spawn_id endi mavjud emas, shuning uchun emlash jarayoni endi faqatgina komponentlar uchun kirish imkoniyatiga ega bo'lmaydi. Bunday tartibga "global spawn_id" qo'shing.

Ko'p miqdordagi hisoblash qobiliyatini faollashtira olmasangiz (ya'ni, sizning tizimingiz qanday tanlashni tanlashi (UX *. *), So'rov (SVR> 2) yoki unga tenglashtirilgan narsa), Bekat faqat bir vaqtning o'zida bitta jarayonni nazorat qila oladi. Bunday holda, spawn_idni o'rnatishga urinmang , yoki exec orqali ishlarni bajarishingiz kerak. Bundan tashqari, siz bir vaqtning o'zida bir nechta jarayonlardan (shu jumladan, foydalanuvchi sifatida) kutish mumkin bo'lmaydi.

Terminal parametrlari skriptlarga katta ta'sir ko'rsatishi mumkin. Misol uchun, skanerlash echoingni izlash uchun yozilgan bo'lsa, echoing o'chirilgan bo'lsa, u noto'g'ri bo'ladi. Shu sababli, bekor bekor qilingan sanali terminali parametrlarini sukut. Afsuski, bu boshqa dasturlarga yoqadigan narsalarni keltirib chiqarishi mumkin. Masalan, emacs qobig'i "odatdagi" xaritalashni o'zgartirishni xohlaydi: yangi satrlarni yangi satrlarni yangi satrlarga almashtirish o'rniga, yangi satrlarni qaytarish va echoing o'chirib qo'yiladi. Bu esa, kirish chizig'ini tartibga solish uchun emacs dan foydalanishga imkon beradi. Afsuski, kutish, buni taxmin qilish mumkin emas.

Siz kutishingiz mumkin, bu kutish Terminal parametrlari asl qiymatini bekor qilmaydi, ammo bunday muhitlar uchun skript yozganda juda ehtiyot bo'lishingiz kerak. Emacs holatida echoing va end-of-line xaritalash kabi narsalarga qarab qoching.

Argumentlar qabul qilingan buyruqlar bitta ro'yxatga kiritilgan ( kutish varianti va o'zaro ta'sirlar ) ro'yxat aslida bitta argumentmi yoki ko'pmi-yo'qligini aniqlash uchun sezgirlikni qo'llaydi. Sezgirchilik faqat ro'yxat aslida bir nechta ko'milgan \ nlar orasida bo'sh joy belgisi bo'lmagan bitta dalilni ifodalaydigan vaziyatda muvaffaqiyatsiz bo'lishi mumkin. Bu juda etarlicha ko'rinmaydi, ammo "noaniqlik" argumenti bitta dalilni bitta dalil sifatida ko'rib chiqishga majbur qilish uchun ishlatilishi mumkin. Buni mashinada yaratilgan kutish kodi bilan ishlatish mumkin. Xuddi shunday, - bitta dalilni bir nechta naqshlar va harakatlar sifatida qo'llashni taqiqlaydi.

Xato

Dasturni "jinsiy aloqa" ("Smart EXec" yoki "Send-Excpect" uchun) nomini berish juda qiziq bo'ldi, ammo yaxshi ma'noda (yoki, ehtimol, faqat Puritanism) g'olib chiqdi.

Ba'zi tizimlarda, qobiq po'stlog'iga o'ralgan paytda, ttyga kirish imkoniga ega bo'lmaslikdan qat'iy nazar shikoyat qiladi. Bu sizning sistemangizda "Beklent" haqida bilmaganlarni nazorat qilish mexanizmiga ega ekanligini anglatadi. Iltimos, nima ekanligini bilib oling va bu ma'lumotni menga qaytarib yuboring.

Ultrix 4.1 (bu erda hech bo'lmaganda so'nggi versiyalar) 1000000 dan yuqori bo'lgan vaqtni 0 ga teng deb hisoblaydi.

Raqamli UNIX 4.0A (va ehtimol boshqa versiyalar) agar SIGCHLD operatorini aniqlasangiz, ptys ni ajratishni rad etadi. Qo'shimcha ma'lumot olish uchun grant sahifasiga qarang.

IRIX 6.0 pty ruxsatlarini to'g'ri ishlamaydi, shuning uchun agar boshqa birov tomonidan ilgari foydalanadigan pty ni ajratishga urinishlar bo'lsa, bajarilmaydi. IRIX 6.1 ga yangilang.

Telnet (faqat SunOS 4.1.2 ostida tasdiqlangan) TERM sozlanmagan bo'lsa to'xtaydi. Bu Cron, CGI va CMI skriptlarida, TERM aniqlanmagan muammo. Shunday qilib, uni aniq belgilashingiz kerak - odatda qanday turdagi narsalarga e'tibor berilmasin. Faqat bir narsaga aylanish kerak! Ko'pgina holatlar uchun quyidagilar etarli.

set env (TERM) vt100

Maslahat (BSDI BSD / OS 3.1 i386 ostida tasdiqlangan) SHELL va HOME sozlanmagan bo'lsa, xuddi shunday bo'ladi. Bu atrof-muhit o'zgaruvchilarini belgilaydigan cron , cgi va cgi skriptlarida muammo. Shunday qilib, ularni aniq belgilashingiz kerak - odatda qanday turdagi narsalarga e'tibor bermaslik kerak. Faqat bir narsaga aylanish kerak! Ko'pgina holatlar uchun quyidagilar etarli.

env (SHELL) / bin / sh parametrini env (HOME) / usr / local / bin-ga sozlang

Ptys ning ba'zi ilovalari, fayl identifikatorini yopib qo'ygandan so'ng, yadro 10 dan 15 soniyagacha (aniq raqam dasturga bog'liq) keyin o'qilmagan chiqishni tashlab yuboradi. Shunday qilib, dasturlarni kuting

20 mart kuni uyquga o'tadigan kun

muvaffaqiyatsiz bo'ladi. Bunga yo'l qo'ymaslik uchun interferentsiya dasturlarini exec o'rniga chaqiring . Bunday hollarni hisobga oladigan bo'lsak-da, amalda men hech qachon bunday xatti-harakatlar tufayli haqiqiy interfaol dasturning yakuniy chiqishi yo'qolib ketadigan vaziyatga duch kelmadim.

Boshqa tomondan, Cray UNICOS ptys fayl identifikatorini yopib bo'lgandan so'ng darhol o'qilmagan chiqishni tashlaydi. Men buni Crayga ma'lum qildim va ular tuzatishlar ustida ishlashmoqda.

Ba'zan tty interfeysi UART sozlamalarini o'zgartirganda yoki boshlang'ich / to'xtash bitlarini qidirish orqali bodning tezligini moslashtirish kabi tezkor va javob o'rtasida kechikish talab qilinadi. Odatda, bularning barchasi ikkinchi yoki ikkita uyquni talab qiladi. Keyinchalik mustahkam texnika apparat kirishga tayyor bo'lgunga qadar qayta urinishdir. Quyidagi misol ikkala strategiyadan ham foydalanadi:

"tezligi 9600 \ r" ni yuboring; uxlash 1 kutish {{{{temyo'yish}} vaqti; exp_continue} $ prompt}

tuzoq kodi uyg'otish kabi Tcl-ning voqea qismida joylashgan biron bir buyruq bilan ishlamaydi. Muammo, hodisaning aylanishida Tcl vaqtinchalik voqea ishlovchilaridan qaytish kodlarini bekor qiladi. Vaqtinchalik hal qilish, tuzoq kodida bayroq o'rnatishdir. Keyin buyrug'i (ya'ni, uyqu) keyin bayroqni tekshiring.

Expect_background buyrug'i e'tibordan chetda qoldirilgan argumentlarni umuman e'tibordan chetda qoldirmaydi.

& # 34; EXPECT MENU & # 34;

Intuitiv bo'lmagan bo'lishi mumkin bo'lgan taxminlar haqida bir nechta narsa bor. Ushbu bo'lim bir nechta taklif bilan ba'zi narsalarni hal qilishga intiladi.

Ko'pincha kutilgan muammo - bu qobiqni qanday qabul qilish kerakligi. Ular turli xil odamlar va turli xil qobiqlar tomonidan boshqacha tarzda moslashtirilganligi sababli, rloginni avtomatizatsiyalashni so'rashni bilmasdan qiyinlashtirishi mumkin. Aqlli qoidalar foydalanuvchi o'z xohish-istaklarini (xususan, oxirigacha) tavsiflovchi muntazam ifodasini EXPECT_PROMPT muhit o'zgaruvchisida saqlashi hisoblanadi. Quyidagi kabi kod ishlatilishi mumkin. EXPECT_PROMPT mavjud bo'lmasa, kodning to'g'ri ishlashi uchun yaxshi imkoniyat bor.

($ | # | \\ $) $ "so'rovini o'rnatish; # default ma'ruza catch {set prompt $ env (EXPECT_PROMPT)} kutish -re $ prompt

Sizni ko'rishni istagan narsalarning oxirini o'z ichiga olgan naqshlarni kutishingizni tavsiya qilaman. Bu narsa hamma narsani ko'rishdan avval savolga javob berishning oldini olish imkoniyatidan qochadi. Bundan tashqari, siz ularni butunlay ko'rib oldin savollarga javob bera olishingiz mumkin bo'lsa-da, agar siz erta javob beradigan bo'lsangiz, javobingiz savol o'rtasiga qayta aks ettirilishi mumkin. Boshqacha aytganda, olib borilgan suhbatlar to'g'ri bo'ladi, ammo chalkashliklar ko'rinadi.

Ko'pgina takliflar oxirida bo'sh joy belgisini o'z ichiga oladi. Misol uchun, ftp-dan so'rov "f", "t", "p", ">" va ". Ushbu buyruqqa mos kelish uchun siz ushbu belgilarning har biri uchun hisoblashingiz kerak. Bo'shni kiritmaslikning keng tarqalgan xatosi. Bo'shni aniq qilib qo'ying.

X * shakli naqshidan foydalansangiz * * X ning oxiridan olingan barcha chiqimlar so'nggi olingan narsaga mos keladi. Bu sezgir bo'ladi, lekin biroz chalkash bo'lishi mumkin, chunki "qabul qilingan oxirgi narsa" kompyuterning tezligiga va yadro va qurilma drayveri tomonidan I / U ishlashiga qarab o'zgarishi mumkin.

Xususan, odamlar odatda dasturlarning ko'pchiligini bir vaqtning o'zida bir qator ishlab chiqaradigan bo'lsa, atom dasturida katta hajmdagi dasturlarni ko'rishni ko'rishadi. Buni inobatga olib, avvalgi xatboshidagi nusxadagi * faqat hozirgi liniyaning oxiriga to'g'ri kelishi mumkin, garchi u ko'proq ko'rinadigan bo'lsa-da, chunki o'yin davomida barcha olingan natijalar edi.

kutishingiz sizning namunangiz uchun maxsus hisoblanmaguncha, qo'shimcha mahsulot chiqishi haqida hech qanday ma'lumot yo'q.

Hat-yo'naltirilgan bufferingga bog'liq holda ham aqlsizdir. Dasturlar kamdan-kam hollarda buferlash turiga oid va'da qiladi, ammo tizimning hasharotlari chiqish chizig'ini kesishi va chiziqlar tasodifan tasodifiy joylarda uzilishi mumkin. Shunday qilib, agar siz naqsh yozishni xohlasangiz, so'nggi bir nechta belgilarni ifodalashingiz mumkin, buni bajarish oqilona.

Agar dasturning oxirgi chiqishi uchun naqshni kutmoqchi bo'lsangiz va dastur o'rniga boshqa biror narsa chiqsa, siz uni tugash vaqtidagi kalit so'z bilan aniqlay olmaysiz. Buning sababi shundaki, kutish muddati tugamaydi - buning o'rniga, bir eof ko'rsatiladi. Buning o'rniga foydalaning. Bundan ham yaxshiroq, har ikkalasini ham foydalaning. Shunday qilib, bu chiziq atrofga aylantirilsa, chiziqni o'zingiz o'zgartirishingiz shart emas.

Yangi chiziqlar, odatda, terminalda drayveri tomonidan chiqarilganda, chiziq qaytish, chiziqli terish tartiblariga aylantiriladi. Shunday qilib, printf ("foo \ nbar") dan ikkita qatorga aniq mos keladigan naqsh bo'lsa, "foo \ r \ nbar" naqshini qo'llashingiz kerak.

Shu kabi tarjima foydalanuvchi tomonidan o'qib chiqib, expect_user orqali amalga oshiriladi . Bunday holda, siz qaytarish tugmasini bosganingizda, u yangi satrga tarjima qilinadi. Agar kutilsa , terminalni xom rejimga aylantirgan dasturga (telnet kabi) o'tib ketsa, dastur haqiqiy qaytishini kutganidek muammo yuzaga keladi. (Ba'zi dasturlar haqiqatan ham kechirimlidir, chunki ular avtomatik ravishda yangi satrlarni qaytarib beradi, lekin ko'pi yo'q.) Afsuski, dastur o'z terminalini xom rejimga qo'yganligini bilib bo'lmaydi.

Qaytarib olingan yangi satrlarni qo'l bilan almashtirish o'rniga, tarjimani to'xtatadigan "stty raw" buyrug'ini ishlatish kerak. Shunga qaramasdan, siz endi pishirilgan chiziqni tahrirlash xususiyatlarini olmaysiz.

interaktiv ravishda terminalni xom rejimga o'tkazadi, shu sababli bu muammo paydo bo'lmaydi.

Ko'pincha parollarni (yoki boshqa shaxsiy ma'lumotlarni) " Bekor buyruqlari" da saqlash foydali bo'ladi. Bu tavsiya etilmaydi, chunki kompyuterda saqlanadigan biror narsaga kimdir kira olishi mumkin. Shunday qilib, skriptdan parollarni interaktiv tarzda so'rash, ularni ma'nosiz ravishda joylashtirishdan ko'ra aqlga sig'maydigan fikrdir. Shunga qaramay, ba'zan bunday ko'mish yagona imkoniyatdir.

Afsuski, UNIX fayl tizimi executable, lekin o'qilmaydigan buyruqlarni yaratishning bevosita usuli yo'q. Ketgid qobiq skriptlarini qo'llab-quvvatlaydigan tizimlar buni bilvosita quyidagi tarzda simulyatsiya qilishi mumkin:

Odatdagidek kutish kutubxonasini (yashirin ma'lumotlarni o'z ichiga olgan) yarating. Ruxsatnomalarni 750 (-rwxr-x ---) bo'lishi va ishonchli guruhga tegishli bo'lishi, ya'ni uni o'qishga ruxsat berilgan guruh bo'lishi kerak. Agar kerak bo'lsa, bu maqsad uchun yangi guruh tuzing. Keyinchalik bir guruhga tegishli bo'lgan 2751 (-rwxr-s - x) ruxsatnomalari bilan / bin / sh skriptini yarating.

Natijada, kimdir tomonidan ijro etilishi (va o'qilishi) mumkin bo'lgan skript. Qachon chaqirilganda, bu Bekor buyruqni ishlatadi .

& # 34; Yana & # 34;

TCL (3), libexpect (3)
"Expecting Expect: Interactive Dasturlarni Avtomatlashtirish uchun Tcl asosli vositalar" , Don Libes, 602 bet, ISBN 1-56592-090-2, O'Reilly va Associates, 1995.
1990 yilda USENIX konferentsiyasi, Anaheim, Kaliforniya, 1990 yil, 11-15 iyun, Don Libes tomonidan tayyorlangan .
1990 yil, 17-19 oktyabr, Kolorado shtatining Kolorado shtati, Kolorado shtatining 1990 yil USENIX keng ko'lamdagi montaj tizimlarini boshqarish konferentsiyasi. Don Libes tomonidan tayyorlangan "Sistemani boshqarish vazifalarini avtomatlashtirishni kutish ."
1990 yil, 22-26 yanvar, Vashington, DC, 1990 yil, USENIX konferensiyasi, Jon Ousterhout tomonidan tayyorlangan "Tcl: buyrukli buyruqlar tili". Don Libes, Computing Systems, "Interactive Programs , Vol. Kaliforniya universiteti Press Journals, Noyabr 1991. I "Regression Testing and Conformance Testing Interactive Programs", Don Libes tomonidan, 1992 yil yozgi materiallari USENIX konferensiyasi, s. 135-144, San Antonio, TX, 12-15 iyun, 1992 yil. "Kibitz - bir nechta interfaol dasturlarni birlashtira olaman", Don Libes, dasturiy ta'minot va tajriba, John Wiley & Sons, G'arbiy Sasseks, Angliya, Vol.

1993 yil, 10-11 iyun, 1993 yil, Tcl / Tk seminari, Berkeley, CA, Don Libes tomonidan tayyorlangan "TCL ilovalari uchun tuzatuvchisi".

AUTHOR

Don Libes, Milliy standartlar va texnologiyalar instituti

Tushunchalar

Tcl uchun Jon Ousterhout va ilhom uchun Scott Paisley uchun rahmat. Rob Savoyning rahmatiga ko'ra, autokonfiguratsiya kodi.

TARIX fayli hujjatning evolyutsiyasidan juda ko'p narsalarni tasdiqlaydi. Bu qiziqarli o'qish imkonini beradi va sizga bu dasturiy ta'minotni yanada yaxshiroq tushunish imkonini beradi. Unda ko'rsatilgan xatolarga yo'l qo'ygan odamlarga rahmat va boshqa yordam berdi.

Loyihani loyihalashtirish va amalga oshirish qisman AQSh hukumati tomonidan to'lanadi va shuning uchun jamoatchilikka beriladi. Biroq, agar ushbu dastur va hujjat yoki uning qismlari ishlatilgan bo'lsa, muallif va NIST kredit talab qiladi.