लिनक्स / यूनिक्स कमांडची अपेक्षा

अपेक्षा एक कार्यक्रम आहे जो एका स्क्रिप्टनुसार इतर परस्पर कार्यक्रमांशी बोलतो. स्क्रिप्टचे अनुसरण करणे, अपेक्षित आहे काय प्रोग्रॅमकडून अपेक्षा केली जाऊ शकते आणि योग्य प्रतिसाद काय असावा. भाषांतराची भाषा संवाद दर्शविण्याकरीता शाखन आणि उच्चस्तरीय नियंत्रण संरचना पुरवते. याव्यतिरिक्त, वापरकर्ता जेव्हा इच्छित असेल तेव्हा प्रत्यक्ष नियंत्रण आणि संवाद साधू शकतात, त्यानंतर स्क्रिप्टवर नियंत्रण परत मिळवू शकतात.

एक्सपेकक म्हणजे अपेक्षा आणि टीका यांचे मिश्रण हे फक्त अपेक्षा आणि टीएसीच्या इच्छेप्रमाणे वागते. अपेक्षित देखील Tcl विना सी किंवा C + + मध्ये थेट वापरले जाऊ शकते.

नाव "अपेक्षा" uucp, kermit आणि इतर मोडेम नियंत्रण कार्यक्रमांद्वारे लोकप्रिय केलेल्या पाठविण्याची / अपेक्षित अनुक्रमांची कल्पना येते. तथापि uucp विपरीत, अपेक्षा सामान्यीकृत आहे जेणेकरून ते कोणत्याही प्रोग्राम आणि कार्ये लक्षात घेऊन वापरकर्ता-स्तर आदेश म्हणून चालवता येऊ शकते. अपेक्षित एकाच वेळी अनेक कार्यक्रमांशी बोलू शकता.

काय अपेक्षा करू शकता

उदाहरणार्थ, अशी काही गोष्टी आहेत ज्याची अपेक्षा करणे अपेक्षित आहे:

शेल ही कार्ये का करू शकत नाही याचे विविध प्रकार आहेत. सर्व अपेक्षा सह शक्य आहेत

सर्वसाधारणपणे, प्रोग्रॅम आणि वापरकर्ता दरम्यान परस्पर क्रिया आवश्यक असलेली प्रोग्राम चालवण्यासाठी उपयुक्त आहे. सर्व आवश्यक आहे की परस्परसंवाद प्रोग्रामनुसार करता येईल. अपेक्षित नियंत्रण असलेल्या प्रोग्रामला थांबविल्याशिवाय वापरकर्त्यास परत नियंत्रण देखील देऊ शकते. त्याचप्रमाणे, वापरकर्ता कोणत्याही वेळी स्क्रिप्टवर नियंत्रण परत करु शकतो.

वापर

अपेक्षित कार्यान्वीत करण्याच्या आदेशांची यादी cmdfile वाचते. अपेक्षेने प्रणालीवर सर्वत्र लागू केले जाऊ शकते जे # चे समर्थन करते! स्क्रिप्टला निष्क्रीय म्हणून स्क्रिप्ट चिन्हांकित करून आणि स्क्रिप्टमध्ये पहिली ओळ बनवून नोटेशन:

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

नक्कीच, पथाने अचूकपणे कुठे अत्यावश्यक आहे हे वर्णन करणे आवश्यक आहे. / usr / local / bin हे फक्त एक उदाहरण आहे.

-c ध्वज स्क्रिप्टमध्ये कोणत्याही आधी कार्यान्वित करण्याला आदेश देते. शेलने तोडणे टाळण्यासाठी आदेश टाईप केला पाहिजे. हा पर्याय एकाधिक वेळा वापरला जाऊ शकतो. एकापेक्षा जास्त कमांडस् एक -सीसह कार्यान्वित केले जाऊ शकतात ज्या अर्धविरामाने त्यांना वेगळे करतात. कमांड्स दिसतात त्या क्रमाने कार्यान्वित केल्या जातात. Expectk वापरताना, हा पर्याय -command म्हणून निर्दिष्ट केला जातो

-डी फ्लॅग काही निदान आउटपुट सक्षम करते, मुख्यतः अपेक्षित आणि संवाद साधण्यासारख्या आदेशांचा अंतर्गत क्रियाकलाप अहवाल देते हे ध्वज "Ex_internal 1" सारखेच अपेक्षित स्क्रिप्टच्या सुरूवातीलाच आहे, तसेच अपेक्षित आवृत्तीचे मुद्रण झाले आहे.

-डी ध्वज एक परस्पर डीबगर सक्षम करतो. एक पूर्णांक मूल्य अनुसरण करावे. मूल्य शून्य-शून्य असल्यास डीव्हीजर पुढील Tcl प्रक्रियेच्या आधी नियंत्रण ठेवेल किंवा जर ^ सी दाबली असेल किंवा ब्रेकपॉईंट दाबा असेल किंवा स्क्रिप्टमध्ये इतर योग्य डीबगर कमांड दिसत असेल तर Expectk वापरताना, हा पर्याय - डीबग म्हणून निर्दिष्ट केला जातो.

-f फ्लॅग ज्या फाइलमधून आदेश वाचते त्यास प्रीफेस करते. # ध्वज वापरताना तो केवळ उपयोगी असल्याने ध्वजच फक्त वैकल्पिक आहे. संकेतन, जेणेकरून कमांड लाईनवर इतर वितर्क पुरवले जातील. Expectk वापरताना, हा पर्याय -file म्हणून निर्दिष्ट केला आहे.

पूर्वनिर्धारितपणे, आदेश फाइल स्मृतीमध्ये वाचली जाते आणि संपूर्णपणे कार्यान्वित केली जाते. एकाच वेळी एक ओळ फाईल वाचणे कधीकधी अपेक्षित आहे. अनियंत्रित फाइल्सना हाताळण्याकरिता सक्ती करण्याकरिता, -b फ्लॅगचा वापर करा. Expectk वापरताना, हा पर्याय -बफर म्हणून निर्दिष्ट केला जातो.

जर "-" स्ट्रिंग फाईलचे नाव म्हणून पुरवली असेल, तर त्याऐवजी मानक इनपुटचे वाचन केले जाईल. वास्तविकपणे "-" नावाच्या एका फाइलमधून वाचण्यासाठी "./-" वापरा.

-i ध्वज फॉल्स एखाद्या फाइलवरून वाचण्याऐवजी आज्ञांकांसाठी विचारविनिमय करण्यास उत्सुक. प्रॉम्प्टिंग एक्झिट कमांड द्वारे किंवा EOF वर समाप्त केले जाते. -i फ्लॅग असे गृहीत धरले जाते जर कोणताही आदेश फाइल किंवा -सी वापरली नसेल तर Expectk वापरताना, हा पर्याय इंटरफेस म्हणून निर्दिष्ट केला जातो.

- पर्यायांच्या शेवटी मर्यादित करण्यासाठी वापरले जाऊ शकते. हे उपयुक्त आहे जर आपण अपेक्षेने स्पष्टीकरण दिल्याशिवाय आपल्या स्क्रिप्टवरील पर्याय सारखी आर्ग्यूमेंट पास करू इच्छित असाल. हे उपयोगीपणे # मध्ये ठेवले जाऊ शकते! अपेक्षा करून कोणत्याही ध्वजाप्रमाणे अर्थास रोखण्यासाठी रेखा उदाहरणार्थ, खालील चर argv मधील स्क्रिप्टचे नाव असलेली मूळ आर्ग्युमेंट्स सोडतील.

#! / usr / local / bin / expect -

लक्षात ठेवा की # ला अर्ग्युमेंट जोडताना नेहमीच्या getopt (3) आणि execve (2) संमेलने पाहणे आवश्यक आहे! ओळ

$ Exp_library / expect.rc फाइल जर उपलब्ध असेल तर आपोआप सोअर्स आहे, जोपर्यंत -एन फ्लॅगचा वापर होत नाही तोपर्यंत. (Expectk वापरताना, हा पर्याय -NORC म्हणून निर्दिष्ट केला आहे.) या नंतर लगेच, फाइल ~ / .expect.rc स्वयंचलितरित्या sourced आहे, जोपर्यंत -n flag वापरला जात नाही. जर पर्यावरण डीओटीडीआयआर परिभाषित केले असेल, तर ती एक निर्देशिका मानली जाते आणि .expect.rc येथून वाचली जाते. Expectk वापरताना, हा पर्याय -norc म्हणून निश्चित केला जातो. हे आउटसोर्सिंग फक्त -क फॅक्स कार्यान्वीत केल्यानंतर होते.

-v कारण त्याच्या आवृत्ती संख्या मुद्रित आणि बाहेर पडा करण्याची अपेक्षा. एक्सक्साक मध्ये संबंधित ध्वज, जे लांबल ध्वज नाव वापरते, हे आहे-वर्जन.

पर्यायी अर्गस एका सूचीमध्ये तयार केले जातात आणि नामित चलनात argv मध्ये आणि argc ला argv च्या लांबीपर्यंत प्रारंभ केला जातो.

जर स्क्रिप्ट वापरले नसेल तर Argv0 ला स्क्रिप्टीचे नाव किंवा बायनरी असे म्हटले जाते. उदाहरणार्थ, खालील स्क्रिप्टचे नाव आणि पहिल्या तीन वितर्क मुद्रित करते:

send_user "$ argv0 [लॅन्ज $ argv 0 2] \ n"

आदेश

साधन कमांड भाषा वापरण्याची अपेक्षा करा टीसीएल नियंत्रण प्रवाह (असल्यास, ब्रेक), अभिव्यक्ती मूल्यमापन आणि पुनर्रचना आणि प्रक्रिया परिभाषा यासारख्या इतर वैशिष्ट्यांसह प्रदान करते. कमांडस् येथे वापरले परंतु परिभाषित केलेले नाही (set, if, exec) Tcl आज्ञा आहेत अतिरिक्त आज्ञांचे समर्थन करणे अपेक्षित आहे अन्यथा निर्दिष्ट केल्याशिवाय, कमांड रिक्त स्ट्रिंग परत करते.

आदेश त्वरेने स्थित जाऊ शकतात जेणेकरून वर्णक्रमानुसार सूचीबद्ध आहेत तथापि, नवीन वापरकर्त्यांना त्या क्रमाने स्पॅनचे वर्णन, पाठवणे, अपेक्षा करणे आणि संवाद साधणे प्रारंभ करणे सोपे वाटते.

[-स्लेव्ह] बंद [-onexec 0 | 1] [-i spawn_id]

वर्तमान प्रक्रियेचा कनेक्शन बंद करतो. बर्याच परस्परसंवादी कार्यक्रम त्यांच्या स्टँडिंगवर EOF ओळखतात आणि बाहेर पडतात; अशाप्रकारे ते प्रक्रिया पूर्ण करण्यासाठी सहसा पुरेसा आहे. -i फ्लॅग नामित spawn_id शी संबंधित बंद करण्याची प्रक्रिया घोषित करतो.

सध्याच्या प्रक्रियेतून बाहेर पडताना आणि परस्परविरोधी असे दोन्ही अपेक्षा आणि संवाद साधणे शोधून काढेल, परंतु आपण "exec exec $ pid kill" द्वारे प्रक्रिया नष्ट केल्यास, आपल्याला स्पष्टपणे बंद करण्याची आवश्यकता आहे .

-onexec ध्वज कोणत्याही नवीन स्पॉन्ड प्रक्रियेमध्ये स्पॉन id बंद आहे किंवा प्रक्रिया ओव्हरलेआड झाली आहे किंवा नाही हे निर्धारित करते. स्पॉन id उघडे सोडण्यासाठी, मूल्य 0 वापरा. ​​शून्य-शून्य पूर्णांक मूल्य कोणत्याही नवीन प्रक्रियेत बंद झालेली स्पॉनला सक्ती करते.

स्लेव्ह फ्लॅग स्पॉन id सह संबंधित गुलाम बंद करतो. जेव्हा कनेक्शन बंद केले जाते, तेव्हा दास स्वयंचलितपणे बंद असतो तसेच तो अजूनही खुला असतो.

कनेक्शन पूर्णपणे किंवा स्पष्टपणे बंद केले आहे किंवा नाही तरीही, आपण संबंधित कर्नल प्रक्रिया स्लॉट साफ करण्यासाठी प्रतीक्षा करावी. जवळच्या कमांडची प्रतीक्षा कॉल करत नाही कारण प्रक्रिया कनेक्शन बंद केल्यामुळे तो बाहेर पडेल.

डीबग [[-now] 0 | 1]

आपण स्टेटमेन्टच्या माध्यमातून पुढे जा आणि ब्रेकपॉइंट सेट करण्याची परवानगी देणारी एक टीसीएल डीबगर नियंत्रित करते.

एकही आर्ग्यूमेंट नसल्यास, डीबगर चालत नसल्यास 1 परत केला जातो, अन्यथा 0 परत केला जातो.

1 वितर्काने, डीबगर प्रारंभ झाला आहे. 0 वितर्काने डीबगर थांबविले जाते. 1 आर्ग्युमेंट आधीपासून-आता फ्लॅगद्वारे असेल तर डीबगर तत्काळ सुरु होईल. नाहीतर, डिबगर पुढील Tcl विवरणीसह सुरू होईल.

डीबग आज्ञा कोणत्याही सापळे बदलत नाही. -डी ध्वज सह अपेक्षा सुरू करण्यासाठी हे तुलना करा

डिस्कनेक्ट कमांड टर्मिनल वरून एक फोर्कडेट प्रोसेस डिस्कनेक्ट करतो. हे पार्श्वभूमीमध्ये चालत आहे. प्रक्रिया स्वतःचे प्रक्रिया गट दिले जाते. मानक I / O ला / dev / null मध्ये पुनर्निर्देशित केले जाते

पार्श्वभूमीमध्ये स्क्रिप्ट चालवणे सुरू ठेवण्यासाठी पुढील तुकडा डिस्कनेक्ट वापरतो.

जर {[fork]! = 0} डिस्कनेक्टमधून बाहेर जा. . .

खालील स्क्रिप्ट पासवर्ड वाचते आणि त्यानंतर प्रत्येक तासासाठी प्रत्येक तासासाठी कार्यक्रम चालविला जातो जो प्रत्येक वेळी चालवला जातो. स्क्रिप्ट पासवर्ड पुरवेल जेणेकरून आपल्याला केवळ एकदा तो टाइप करावा लागेल.

send_user "password? \" expect_user -re "(. *) \ n" for {} 1 {} {जर {[fork]! = 0} {sleep 3600; continue} स्पेन खाजगी डिस्कचा डिस्कनेक्ट अपेक्षित पासवर्ड: "$ expect_out" पाठवा 1, स्ट्रिंग) \ r ". . . exit}

शेल असिंक्रोनस प्रोसेस गुणविशेष (&) वर डिस्कनेक्ट वापरण्याचा एक फायदा म्हणजे अशी अपेक्षा आहे की खंडित करण्याआधी टर्मिनल पॅरामीटर्स वाचू शकतील आणि नंतर ते नवीन ptys वर लागू होतील. सह & टर्मिनल टर्मिनल आधीच वेळ डिस्कनेक्ट आहे पासून टर्मिनल च्या मापदंड वाचण्यासाठी एक अपेक्षा नाही अपेक्षा Expect नियंत्रण प्राप्त.

exit [-opts] [स्थिती]

कारणे बाहेर पडण्याचा किंवा असे करण्यास तयार करणे अपेक्षित आहे.

-onexit ध्वज पुढील परस्परविरोधी बाहेर पडा हाताळणी म्हणून वापरले जाऊ देते वादविवाद न करता, वर्तमान बाहेर जाण्याचा हँडलर परत केला जातो.

-नाईक्सित झेंडा बाहेर पडण्यासाठी तयार करण्याची अपेक्षा करते परंतु प्रत्यक्षात ऑपरेटिंग सिस्टमवर नियंत्रण मिळवण्यापेक्षा कमी होते. वापरकर्ता-परिभाषित बाहेर पडण्याचा हँडलर तसेच अपेक्षित स्वत: च्या अंतर्गत हँडलर चालवा. पुढील कोणतीही Exacts कमांड कार्यान्वित करणे आवश्यक आहे. हे उपयुक्त आहे जर तुम्ही इतर टीसीएलचे विस्तार बघू शकता. वर्तमान इंटरप्रिटर (आणि मुख्य विंडो जर वातावरणात असेल तर) जेणेकरून इतर टीसीएलचे विस्तार साफ करता येतील. अपेक्षितचे निर्गमन पुन्हा कॉल केले जाते (तरी हे होऊ शकते), तर हॅंडलर पुन्हा चालवू शकत नाहीत

बाहेर पडल्यावर, स्पॉन्ड प्रक्रियेसाठी सर्व कनेक्शन बंद होतात. स्पॉन्ड प्रक्रियेद्वारे बंद होण्याचा एक EOF म्हणून ओळखला जाईल. बाहेर पडताना इतर कोणतीच कृती न घेता, जे सामान्य _एक्सिट (2) प्रक्रिया करते. त्यामुळे EFO साठी तपासणी न केलेले प्रक्रिया तयार होऊ शकते. (वेगवेगळ्या स्थितींचे निर्धारण करणे महत्वाचे आहे, उदाहरणार्थ, काय एक सिंचन प्रक्रिया दर्शविली जाईल, परंतु ते हे सिस्टिमवर अवलंबून आहेत, विशेषत: बाहेर पडणे (3) अंतर्गत दस्तऐवजीकरण.) स्पॅन केलेली कार्यपद्धती जे चालू ठेवतात ते init द्वारे वारशाने केले जाईल.

स्थिती (किंवा 0 जर निर्दिष्ट केली नसेल तर) अपेक्षित च्या निर्गमन स्थिती म्हणून परत आहे. स्क्रिप्टच्या समाप्तीपर्यंत पोहोचल्यास बाहेर पडणे पूर्णतया अंमलात येईल.

[-continue_timer] पुढे चालू ठेवा
Exp_continue आदेश वापरणे अपेक्षित आहे की ते सामान्यत: रिटर्न करण्यापेक्षा ऐवजी कार्यान्वीत सुरू ठेवेल. पूर्वनिर्धारितपणे exp_continue टाइमआउट टाइमर रीसेट करतो -continue_timer ध्वज टायमर रीस्टार्ट करण्यापासून रोखते. (अधिक माहितीसाठी अपेक्षा पहा.)

exp_internal [-f फाइल] मूल्य
निदान माहिती आंतरिक पाठविण्यासाठी पुढील आज्ञा कारणीभूत ठरतात कारण मूल्य शून्य नसल्यास stderr ची अपेक्षा करणे मूल्य 0 असेल तर हे आउटपुट अकार्यान्वित केले आहे. निदान माहितीमध्ये प्रत्येक अक्षर प्राप्त झाले आहेत, आणि नमुन्यांच्या विरूद्ध चालू आउटपुटशी जुळणारे प्रत्येक प्रयत्न.

पर्यायी फाइल पुरवली असल्यास, सर्व सामान्य व डीबगिंग आऊटपुट त्या फाइलमध्ये लिहीले जाते (मूल्य मूल्याची पर्वा न करता). कोणताही पूर्वनिदान आउटपुट फाइल बंद आहे.

-इन्फो ध्वज exp_internal ला दिलेल्या सर्वात अलीकडील गैर-माहिती वितर्कांचे वर्णन परत आणते.

exp_open [args] [-i spawn_id]
Tcl फाइल आयडेंटिफायर परत करतो जे मूळ स्पॉन id शी संबंधित आहे. फाइल अभिज्ञापक नंतर Tcl च्या ओपन कमांड द्वारे उघडल्याप्रमाणे असे वापरले जाऊ शकते. (स्पॉन आयडी यापुढे वापरली जाऊ नये. प्रतिक्षा करता येणार नाही.

एक्सप्लोर कमांड द्वारे प्रवेश मिळवण्यासाठी -पोलिओव्हन फ्लॅंड स्पॉन id ओपन करतो. स्पॉन idवर प्रतीक्षा करणे आवश्यक आहे

exp_pid [-i spawn_id]
सध्या तयार केलेल्या प्रक्रियेशी संबंधित कार्यपध्दती आयडी देते. जर -i ध्वज वापरला असेल तर, पीआयड दिलेल्या स्पॉन id च्या संबंधित आहे.

exp_send
पाठविण्यासाठी उपनाव आहे

exp_send_error
send_error साठी उपनाव आहे

exp_seend_log
send_log साठी उपनाव आहे

exp_send_tty
send_tty साठी उपनाव आहे

exp_send_user
हे send_user साठी उपनाव आहे.

exp_version [[-exit] आवृत्ती]
स्क्रिप्ट आशेच्या वर्तमान आवृत्तीशी सुसंगत असल्याचे आश्वासन देण्यासाठी उपयुक्त आहे.

एकही आर्ग्युमेंट न करता, अपेक्षाची वर्तमान आवृत्ती परत दिली जाते. ही आवृत्ती नंतर आपल्या स्क्रिप्टमध्ये एन्कोड केलेली असू शकते. जर आपल्याला माहित असेल की आपण अलिकडील आवृत्त्यांमधील वैशिष्ट्ये वापरत नाही तर आपण पूर्वीची आवृत्ती निर्दिष्ट करू शकता.

आवृत्त्यांमध्ये बिंदूंमधील तीन संख्या असतात. प्रथम मुख्य क्रमांक आहे भिन्न प्रमुख संख्येसह अपेक्षेच्या आवृत्त्यांसाठी लिहिलेली स्क्रिप्ट जवळजवळ नक्कीच कार्य करणार नाही मुख्य क्रमांक जुळत नसल्यास exp_version त्रुटी परत करते.

दुसरे म्हणजे लहान संख्या. वर्तमान आवृत्तीपेक्षा अधिक मोठ्या संख्येसह एका आवृत्तीसाठी लिहीलेल्या स्क्रिप्ट काही नवीन वैशिष्ट्यावर अवलंबून असू शकतात आणि कदाचित चालत नसतील. मुख्य आकडे जुळल्यास exp_version त्रुटी परत करते, परंतु स्क्रिप्ट लहान संख्या कार्यरत अपेक्षेपेक्षा जास्त आहे

तिसरी संख्या अशी आहे जी आवृत्तीच्या तुलनेत भाग नाही. तथापि, जेव्हा अपेक्षेने सॉफ्टवेअर वितरण कोणत्याही प्रकारे बदलले जाते, जसे अतिरिक्त दस्तऐवजीकरण किंवा ऑप्टिमायझेशनद्वारे ती वाढत जाते. प्रत्येक नवीन लघु आवृत्तीवर 0 ला रीसेट केले जाते.

-एक्सिट फ्लॅगसह, त्रुटीची छाननी करा आणि आवृत्ती कालबाह्य असल्यास बाहेर पडेल.

अपेक्षित [[-opts] pat1 body1] ... [-opts] patn [bodyn]
एक पेंटिंग एक व्युत्पन्न प्रक्रियेच्या आउटपुटशी जुळत नाही तोपर्यंत प्रतीक्षा करते, एक निर्दिष्ट कालावधी पूर्ण झाली आहे किंवा फाईल-ऑफ-फाईल दिसत आहे. जर अंतिम शरीर रिक्त असेल तर ते वगळले जाऊ शकते.

सर्वात अलीकडील अपेक्षेच्या पध्दती- पूर्वीच्या आदेशापुढे हे इतर कोणत्याही नमुन्यांआधी वापरले जातात इतर कोणत्याही नमुन्यांनंतर सर्वात अलीकडील अपेक्षित अपेक्षेच्या पध्दतींचा वापर केला जातो.

जर संपूर्ण अपेक्षेच्या निवेदनासाठी आर्ग्युमेंट्स एकापेक्षा अधिक ओळींची आवश्यकता असेल तर, सर्व आर्ग्युमेंट्स "ब्रशेड" असाव्यात असू शकतात ज्यामुळे प्रत्येक ओळ एका बॅकस्लॅशने संपवली जाऊ शकते. या एका बाबतीत, ब्रेसिजच्या बाहेरील नेहमीच्या Tcl प्रतिस्थापना होतील.

जर पॅटर्न हा कीवर्ड एओएफ असेल तर संबंधित बॉडी फाईलच्या शेवटी संपत आहे. जर एक नमुना कीवर्ड कालबाह्य असेल , तर संबंधित संस्था कालबाह्यतेवर कार्यान्वित केली जाते. जर कालबाह्य कीवर्ड वापरला नाही, तर कालबाह्य झाल्यावर एक निष्क्रीय कार्यरत निष्कर्ष काढला जातो. डीफॉल्ट कालबाह्य कालावधी 10 सेकंद आहे परंतु "सेट टाइमआउट 30" या कमांडद्वारे 30 प्रमाणे, सेट होऊ शकतो. एक अनंत कालबाह्य मूल्य-1 ने नियुक्त केले जाऊ शकते. जर एक नमुना कीवर्ड डीफॉल्ट असेल तर संबंधित बॉडी एकतर कालबाह्य किंवा फाईल ऑफ-फाईलवर चालवली जाते.

जर पॅटर्न जुळत असेल तर संबंधित बॉडी कार्यान्वित केली जाते. अपेक्षित शरीर परिणाम (किंवा रिकामा स्ट्रिंग जुळत नाही तर स्ट्रिंग) परतावा. अनेक नमून्यांची जुळणी झाल्यास, प्रथम दिसणारी व्यक्ती शरीराची निवड करण्यासाठी वापरली जाते.

प्रत्येक वेळी नवीन आउटपुट येते, प्रत्येक नमुन्याशी त्यांची तुलना केली जाते त्याप्रमाणे. अशा प्रकारे, एखादी प्रॉपर्टी दिसावी अशी शेवटची नमुना तुम्ही प्रकट करू शकता. प्रसंग नसलेल्या घटनांमध्ये, आपण कालबाह्य वापरणे आवश्यक आहे (ज्याप्रमाणे आपण स्वतः स्वैच्छिक करीत असता तर).

नमुना तीन प्रकारे निर्दिष्ट केले आहेत. डीफॉल्टनुसार, Tcl च्या स्ट्रिंग मॅच कमांडसारख्या नमुन्यांसह नमुन्यांची निर्दिष्ट केली जाते. (अशा पध्दती सी-शेलच्या रेग्युलर एक्स्प्रेशन्ससारख्याच असतात ज्याला "ग्लोब" नमुन्याप्रमाणेच संबोधले जाते). नमुने संरक्षित करण्यासाठी कदाचित -ग्लॅग्ज ध्वज वापरला जाऊ शकतो जो कदाचित ध्वजांकडून तसे करणे टाळेल . याप्रकारे सुरु होणारी कोणतीही पॅटर्न असा संरक्षित केला पाहिजे "-" ("-" सुरू होणार्या सर्व स्ट्रिंग भावी पर्यायांसाठी आरक्षित आहेत.)

उदाहरणार्थ, पुढील भाग यशस्वी लॉगिनसाठी दिसत आहेत. (लक्षात घ्या की abort ला स्क्रिप्टमध्ये दुसरी पध्दतीने परिभाषित केलेली प्रक्रिया मानली जाते.)

अपेक्षा {व्यस्त {व्यस्त ठेवते \ n; exp_continue} अयशस्वी "अवैध संकेतशब्द" रद्द करणे कालबाह्य व्यत्यय बंद केले}

चौथे नमुना वर कोट्स आवश्यक आहेत कारण यात स्थान आहे, अन्यथा कृतीतून नमुना वेगळा केला जाईल. त्याच क्रियेनुसार नमुन्यांची (जसे की तिसरी आणि चौथी) क्रियांची पुनर्रचना आवश्यक आहे हे regexp-style नमुन्यांची वापरून टाळता येऊ शकते (खाली पहा) ग्लोब-शैलीतील नमुन्यांची रचना करण्याविषयीची अधिक माहिती Tcl मॅन्युअलमध्ये आढळू शकते.

रेगेक्स-शैलीतील नमुन्यांची Tcl च्या regexp ("रेग्युलर एक्सप्रेशन" साठी संक्षिप्त) आज्ञा द्वारे परिभाषित सिंटॅक्सचे अनुसरण करा. regexp नमुने ध्वजांकित- आर सह ओळखले जातात मागील उदाहरण म्हणून regexp वापरुन पुन्हा लिहीले जाऊ शकते:

अपेक्षा {व्यस्त {व्यस्त ठेवते \ n; exp_continue} -re "अयशस्वी | अवैध संकेतशब्द" रद्द करणे कालबाह्य जुडलेले आहे}

दोन्ही प्रकारचे नमुने "असंबद्ध" आहेत याचा अर्थ नमुन्यांची संपूर्ण स्ट्रिंगशी जुळणी करण्याची गरज नसते, परंतु स्ट्रिंगमध्ये कुठेही मॅच सुरू करणे आणि समाप्त करणे शक्य आहे (जितके लांब सर्व काही जुळते). ^ चा वापर स्ट्रिंगच्या आरंभाशी जुळण्यासाठी, आणि $ शेवटशी जुळण्यासाठी लक्षात ठेवा आपण स्ट्रिंगच्या समाप्तीची वाट पाहत नसल्यास, आपले प्रतिसाद सहजपणे स्ट्रिंगच्या मधल्या अंतरावर येऊ शकतात कारण ते तयार केलेल्या प्रक्रियेतून प्रतित होत आहेत. योग्य परिणाम तयार करताना, आउटपुट अनैसर्गिक दिसू शकते अशा प्रकारे, स्ट्रिंगच्या शेवटी अक्षरांचा आपण अचूक वर्णन करू शकता तर $ चे वापरास प्रोत्साहन दिले जाते.

लक्षात ठेवा की अनेक संपादकांमध्ये, अनुक्रमे ओळीच्या सुरुवातीस आणि अखेरीस ^ आणि $ जुळतात. तथापि, अपेक्षित रेखा अग्रेसर नसल्यामुळे, हे वर्ण अपेक्षित जुळणार्या बफरमध्ये सध्या डेटाच्या सुरूवातीस आणि अखेरीस (ओळींच्या विरूद्ध) जुळतात. (तसेच, "सिस्टम अपचन" वर खाली टीप पहा.)

-एक्स ध्वज " नम्र " स्ट्रिंग म्हणून जुळणी करण्यासाठी नमुना कारणीभूत असतो. *, ^, इत्यादीचा अर्थ लावला जात नाही (जरी नेहमीच्या Tcl अधिवेशनांचे निरीक्षण केले गेलेच पाहिजे). अचूक नमुने नेहमी विरहित असतात.

-nocase ध्वज तो लोअरकेस अक्षरे असल्याप्रमाणे तुलना करण्यासाठी आउटपुटच्या अपरकेस वर्णांना बनवितो . नमुना प्रभावित नाही.

आऊटपुट वाचत असताना, 2000 बाइटपेक्षाही जास्त पूर्वी बाइटला "विसरले" असे सक्ती करू शकतात. हे फंक्शन match_max सह बदलले जाऊ शकते. (लक्षात घ्या की मोठ्या प्रमाणातील मूल्ये पॅटर्न मॅचर मंदावू शकतात.) जर पटलिस्ट पूर्ण- बफर असेल तर, संबंधित_एक्सएक्स बाइट्स प्राप्त झाल्यास संबंधित बॉडी कार्यान्वित केली जाते व इतर कोणत्याही नमुन्यांची जुळत नाही. Full_buffer चे कीवर्ड वापरले आहे की नाही, विसरलेले अक्षर expect_out (बफर) वर लिहिले आहे.

जर पटलिस्ट हा कीवर्ड निरर्थक असेल आणि नलकाला अनुमती असेल ( remove_nulls आदेशाद्वारे), तर एकापेक्षा जास्त ASCII 0 जुळल्यास संबंधित बॉडी कार्यान्वित होते. ग्लोब किंवा regexp नमुन्यांमधून 0 बाइट्स जुळवणे शक्य नाही.

एक नमुना (किंवा eof किंवा full_buffer) जुळवण्यावर, कोणतेही जुळणारे आणि पूर्वीचे न जुळणारे उत्पादन वाचक expect_out (बफर) मध्ये जतन केले आहे. Up to 9 regexp उपस्ट्रिंग सामने expect_out (9, स्ट्रिंग) द्वारे expect_out ( 1, string) व्हेरिएबल्समध्ये जतन केले जातात. जर जर एखादा इंडेक्स ध्वज नमुन्यापूर्वी वापरला असेल तर 10 स्ट्रिंगची सुरूवात आणि शेवटचे निर्देशांक ( लॅंग साठी योग्य स्वरूपात) हे व्हॅल्यू expect_out (एक्स, आरंभी) आणि अपेक्षित_अट (एक्स, एन्ड) व्हेरिएबलमध्ये साठवले जाते जेथे X एक आहे अंक, बफरमधील उपस्ट्रिंग स्थानाशी संबंधित आहे. 0 म्हणजे संपूर्ण पॅटर्नशी जुळणार्या स्ट्रिंगची आणि जीओबी नमुन्यांच्या तसेच रेगेक्स नमुनेसाठी निर्माण केली आहे. उदाहरणार्थ, एखाद्या प्रक्रियेने "abcdefgh \ n" चे आऊटपुट तयार केले असल्यास, याचे परिणाम:

अपेक्षा "सीडी"

असे आहे की खालील विधाने अंमलात आणली आहेत:

set expect_out (0, स्ट्रिंग) सीडी सेट expect_out (बफर) abcd

आणि "एफ़्यूग \ n" आउटपुट बफरमध्ये बाकी आहे. जर एखाद्या प्रक्रियेने "abbbcabkkkka \ n" आऊटपुट तयार केले, तर त्याचा परिणाम:

अपेक्षा-निर्देशे-आर "बी (बी *). * (के +)"

असे आहे की खालील विधाने अंमलात आणली आहेत:

सेट expect_out (0, प्रारंभ) 1 सेट expect_out (0, अंत) 10 सेट expect_out (0, स्ट्रिंग) bbbcabkkkk set expect_out (1, प्रारंभ) 2 set expect_out (1, end) 3 set expect_out (1, string) bb set expect_out (2, प्रारंभ) 10 सेट expect_out (2, अंत) 10 सेट expect_out (2, स्ट्रिंग) k सेट expect_out (बफर) abbbcabkkkk

आणि "a \ n" आउटपुट बफरमध्ये सोडले आहे. नमुना "*" (आणि -र ". *") प्रक्रियेद्वारे अधिक आउटपुट न वाचता आउटपुट बफर फ्लश करेल.

साधारणपणे, जुळलेल्या आउटपुटची आंतरीक बफर पासून काढून टाकली जाते. -नोट्रन्सफर फ्लॅगसह नमुना प्रिफेक्स करून हे प्रतिबंधित केले जाऊ शकते. हा ध्वज प्रयोगात उपयुक्त आहे (आणि वापर करताना सोयीसाठी "-छोटा" करण्यासाठी संक्षिप्त केले जाऊ शकते)

जुळणार्या आउटपुटसह (किंवा ईओएफ किंवा फुल_बफर) संबद्ध स्पॉन आयडी expect_out (spawn_id) मध्ये संग्रहित केला जातो

-timeout फ्लॅग वेळेची प्रतीक्षा व्हेरिएबलची व्हॅल्यू वापरण्याऐवजी वर्तमान अपेक्षित आदेशांना टाइमआऊट म्हणून खालील मूल्य वापरण्यास कारणीभूत ठरते.

डीफॉल्टनुसार, वर्तमान प्रक्रियेपासून आऊटपुटच्या तुलनेत नमुन्यांची जुळणी केली जाते, तथापि -i फ्लॅग नामित spawn_id सूचीमधून आउटपुट घोषित केले जाते (पुढील -i पर्यंत ). Spawn_id सूचीत spawn_ids पैकी एक व्हाटस्पेस सेपरेटेड सूची असावी किंवा spawn_ids च्या अशा सूचीचा संदर्भ देणारी एक व्हेरिएबल असावी.

उदाहरणार्थ, खालील उदाहरण $ proc2 नावाच्या spawn_id वरून वर्तमान प्रक्रियेपासून "कनेक्ट" किंवा "व्यस्त", "अयशस्वी" किंवा "अवैध संकेतशब्द" साठी प्रतीक्षेत आहे.

अपेक्षित {-i $ proc2 व्यस्त आहे व्यस्त ठेवते \ n; exp_continue} -re "अयशस्वी | अवैध संकेतशब्द" रद्द करणे कालबाह्य जुडलेले आहे}

ग्लोबल वेअरएबलची व्हॅल्यू कुठल्याही spawn_ids च्या नमुन्याशी जुळविण्यासाठी वापरली जाऊ शकते जी वर्तमान अपेक्षा आदेशामध्ये इतर सर्व -आय ध्वजसह नामित आहेत. Spawn_id संबंधित-नसलेल्या पॅटर्नशिवाय (उदा. दुसर्या -i द्वारे तत्काळ अनुसरित) एक -i ध्वजवरून spawn_id कोणत्याही इतर नमुन्यासाठी, कोणत्याही स्पॅनिश_आयडीशी संबंधित समान अपेक्षीत आदेशात उपलब्ध केला जातो.

-i फ्लॅग ग्लोबल वेरियेबलचे नाव देखील देऊ शकतो ज्यामध्ये वेरियेबल स्पॉन आयड्सच्या सूचीसाठी वाचले जाते. व्हेरिएबल तो बदलते तेव्हा तो पुनर्रचना आहे. आदेश अंमलबजावणी करताना I / O स्त्रोत बदलण्याचा एक मार्ग पुरवते. स्पॉन आयडींना या मार्गाने "अप्रत्यक्ष" स्पॉन आयडी म्हणतात.

ब्रेक म्हणून क्रिया आणि कारण नियंत्रण स्ट्रक्चर्स (उदा. Proc , proc ) नेहमीच्या पद्धतीने वागणे चालू ठेवतात. Exp_continue आदेश वापरणे अपेक्षित आहे की ते सामान्यत: रिटर्न करण्यापेक्षा ऐवजी कार्यान्वीत सुरू ठेवेल.

स्पष्ट लूप किंवा पुनरावृत्ती अपेक्षी स्टेटमेन्ट टाळण्यासाठी हे उपयुक्त आहे. खालील उदाहरण rlogin स्वयंचलित करण्यासाठी एक खंड भाग आहे Rlogin ने संकेतशब्दासाठी विचारले तर exp_continue दुसरी अपेक्षा विधान (पुन्हा प्रॉम्प्ट शोधण्याकरीता) लिहिण्याची प्रवृत्ती टाळते.

$ host वर $ password_ $ send_user "password ($ user साठी)" "expect_user -re" (. *) \ n "send_user" \ n "पाठवा" $ expect_out (1, string) \ r "stty $ {होस्टनेचे कनेक्शन रद्द केले आहे} $ {us_out (बफर) "exit} - चुकीचे {प्रेषक} अयोग्य संकेतशब्द किंवा खाते \ n" exit} कालबाह्य {send_user "$ होस्ट $ कनेक्शनचे कनेक्शन कालबाह्य आहे \ n" exit} eof {send_user " पुन्हा प्रॉम्प्ट}

उदाहरणार्थ, पुढील तुकडा एका युजरला मदत करणारा संवाद साधण्यास मदत करेल जो आधीपासून पूर्णपणे स्वयंचलित आहे. या बाबतीत, टर्मिनल कच्च्या मोडमध्ये ठेवलेला आहे. वापरकर्त्याने "+" दाबल्यास, वेरियेबल वाढविले आहे. "पी" दाबल्यास, पुष्कळशा रिटर्न प्रक्रियेस पाठवले जातात, कदाचित ते कोणत्याही प्रकारे पकडणे, आणि "मी" वापरकर्त्यास प्रक्रियेशी संवाद साधू देतो, प्रभावीरित्या स्क्रिप्टमधून नियंत्रण चोरते. प्रत्येक बाबतीत, exp_continue वर्तमान कार्यवाही केल्यानंतर चालू नमुना चालू ठेवण्याची अपेक्षा करते.

stty raw -echo expect_after {-i $ user_spawn_id "p" {पाठवा "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {संवाद; exp_continue} "बाहेर पडा" बाहेर पडा}

डीफॉल्टनुसार, exp_continue टाइमआउट टाइमर रीसेट करते टाईमर पुन्हा सुरू होत नाही, जर exp_continue -continue_timer ध्वज सह म्हटले जाते

अपेक्षित_नंतर [expect_args]
अपेक्षितपणे कार्य करते त्याप्रमाणेच अपेक्षा असेल तरच अपेक्षा आणि अपेक्षेने अपेक्षित दोन्ही अपेक्षा आल्या तर, अपेक्षित नमुना वापरला जातो. अधिक माहितीसाठी आदेशाअगोदर अपेक्षा ठेवा .

expect_background [expect_args]
अपेक्षेप्रमाणेच सारख्याच वितर्कांना लागतात, तथापि ते लगेच परत येते नवीन इनपुट येईल तेव्हा नमुने तपासले जातात नमुना टाइमआउट आणि डीफॉल्ट अपेक्षित_बॅकग्रामसाठी अर्थहीन आणि शांतपणे टाकून दिले जातात. अन्यथा, अपेक्षित_ बॅकग्राउंड कमांड अपेक्षेप्रमाणेच अपेक्षा करतात-

जेव्हा अपेक्षित_ बॅकग्राउंड क्रियांचे मूल्यांकन केले जात असेल तेव्हा समान स्पॉन id साठी पार्श्वभूमी प्रक्रिया अवरोधित केली जाईल. जेव्हा क्रिया पूर्ण होते तेव्हा पार्श्वभूमी प्रक्रिया अनावरोधित केली जाते. बॅकग्राउंड प्रोसेसिंग ब्लॉक केलेले असताना, (अंडरग्राउंड) समान स्पॉन id वर अपेक्षा करणे शक्य आहे.

अपेक्षित_ बॅकग्राउंड अनावरोधित करताना अपेक्षा करणे शक्य नाही. एक विशिष्ट स्पॉन id साठी अपेक्षित_ बॅकग्राउंड समान स्पॉन idसह नवीन अपेक्षित_बॅग्राची घोषणा करून हटविले आहे. अपेक्षित_ पार्श्वभूमी घोषित केल्याने कोणत्याही नमुनाशिवाय दिलेले स्पॉन id पार्श्वभूमीमध्ये नमुन्यांची जुळणी करण्याच्या क्षमतेवरून काढून टाकते.

अपेक्षित_पूर्वी [expect_args]
अपेक्षेप्रमाणेच सारख्याच वितर्कांना लागतात, तथापि ते लगेच परत येते सर्वात आधीच्या अपेक्षेपेक्षा पॅटर्न-एक्शन जोडी समान स्पॉन id सह पुढील अपेक्षित आदेशांवर निस्वार्थीपणे जोडले जातात. जर एखाद्या पॅटर्नशी जुळत असेल तर ते अपेक्षित आहे की अपेक्षित कमांडमध्ये स्वतःच निर्देशित केला गेला असेल आणि अपेक्षित आज्ञेच्या संदर्भात संबंधित निकालाची अंमलबजावणी केली जाईल. आधीच्या अपेक्षा आणि अपेक्षित दोन्ही पॅटर्न जुळल्यास, अपेक्षेप्रमाणे - प्रतिमान आधी वापरले जाते

कोणतेही नमुने निर्दिष्ट केलेले नसल्यास, स्पॉन आयडी कोणत्याही नमुन्यांसाठी तपासली जात नाही.

एक -i ध्वज अधिलिखित होत नाही तोपर्यंत, अपेक्षित_आवश्यक आधीच्या आदेशाची अंमलबजावणी होते त्या वेळी परिभाषित स्पॉन id विरुद्ध नमुन्यांची जुळणी अपेक्षित ( अपेक्षेनुसार नाही)

-निफो ध्वज त्या अपेक्षेने कोणत्या पॅटर्नशी जुळतील याचे वर्तमान विनिर्देश परत करण्याची अपेक्षा करते. डीफॉल्टनुसार, हे वर्तमान स्पॉन ID वर अहवाल देते स्पॉन id वरील माहितीसाठी पर्यायी पॉन id निर्देश दिले जाऊ शकते. उदाहरणार्थ

expect_before -info -i $ proc

जास्तीतजास्त स्पॉन id निर्देश दिले जाऊ शकतात. फ्लॅग-डायरेक्ट प्रत्यक्ष स्पॉन आयडीज ज्या केवळ अप्रत्यक्ष विनिर्देशांवरून येतात.

स्पॉन id तपशीलाऐवजी, "-एकूण" ध्वज "spout_nfo" सर्व स्पॉन आयडीवर रिपोर्ट करेल.

-finfo ध्वजचे आउटेज अपेक्षित तर्क म्हणूनच पुन्हा वापरले जाऊ शकते-

अपेक्षित_tty [expect_args]
अशी अपेक्षा आहे परंतु ते / dev / tty (म्हणजेच वापरकर्त्यांकडून कीस्ट्रोक्स) पासून वर्ण वाचते. डीफॉल्टनुसार, वाचन शिजवलेल्या मोडमध्ये केले जाते. याप्रमाणे, त्यांना पहाण्याची अपेक्षा करण्यासाठी ओळींना परत मिळणे आवश्यक आहे. हे stty द्वारे बदलले जाऊ शकते (खालील stty कमांड पहा).

अपेक्षित_जर [अपेक्षा_रगे]
अपेक्षेप्रमाणे आहे परंतु ते stdin (म्हणजेच युजरपासूनचे कीस्ट्रोक्स) मधील अक्षरे वाचत आहे. डीफॉल्टनुसार, वाचन शिजवलेल्या मोडमध्ये केले जाते. याप्रमाणे, त्यांना पहाण्याची अपेक्षा करण्यासाठी ओळींना परत मिळणे आवश्यक आहे. हे stty द्वारे बदलले जाऊ शकते (खालील stty कमांड पहा).

काटा
एक नवीन प्रक्रिया तयार करते नवीन प्रक्रिया ही वर्तमान अपेक्षा प्रक्रीयेची एक अचूक प्रत आहे. यशस्वीतेवर, कांकी नवीन (बाल) प्रक्रियेस 0 वर जाते आणि बाल प्रक्रियेची प्रक्रिया ID परत मूळ प्रक्रियेस आणते. अयशस्वी झाल्यानंतर (कायमस्वरुपी संसाधनांच्या अभावामुळे उदा. स्वॅप स्पेस, मेमरी), फोर्क रिटर्न -1 हे मूळ प्रक्रियेस आणि कोणताही बाल प्रक्रिया तयार नाही.

फॉक्ड प्रोसेस बाहेर पडतात , मुळ प्रक्रिया प्रमाणे . फोर्क केलेल्या प्रक्रिया लॉग फाइल्सवर लिहिण्यास परवानगी आहे. आपण बहुतेक प्रक्रियेत डीबगिंग किंवा लॉगींग अक्षम करीत नसल्यास, परिणाम गोंधळविणारे असू शकतो.

काही पीटी लागूकरण बर्याच वाचक आणि लेखकांनी अगदी क्षुब्ध वाटू शकते. याप्रमाणे, स्पॉनिंग प्रक्रियेपूर्वी हा काटा सुरक्षित आहे.

[string1 body1] सह संवाद साधा ... [स्ट्रिंग [bodyn]]
वापरकर्त्याला वर्तमान प्रक्रियेचे नियंत्रण देते, जेणेकरून कीस्ट्रोक चालू प्रक्रियेस पाठविले जातात आणि वर्तमान प्रक्रियेचे stdout आणि stderr परत पाठवले जातात.

स्ट्रींग-बॉडी जोड्या वितर्क म्हणून निर्दिष्ट केल्या जाऊ शकतात, ज्या बाबतीत जेव्हा संबंधित स्ट्रिंग प्रविष्ट केले जाते तेव्हा त्यास अंमलात येतो. (डीफॉल्टनुसार, स्ट्रींग वर्तमान प्रक्रियेस पाठविली जात नाही.) इंटरप्रिटर आदेश गृहीत धरला जातो, जर अंतिम शरीर गहाळ आहे.

संपूर्ण परस्पर- निवेदनासाठी वितर्कांना एकापेक्षा अधिक ओळींची आवश्यकता असल्यास, सर्व आर्ग्युमेंट्स एक "काठीभोवतालची" अशी असू शकतात ज्यामुळे प्रत्येक ओळ एका बॅकस्लॅशने संपवली जाऊ शकते. या एका बाबतीत, ब्रेसिजच्या बाहेरील नेहमीच्या Tcl प्रतिस्थापना होतील.

उदाहरणार्थ, खालील आज्ञा परिभाषित केलेल्या खालील स्ट्रिंग-बॉडी जोड्यासह संवाद साधते: जेव्हा ^ Z दाबा जाते, अपेक्षित निलंबित केले जाते. ( -आरिसेट ध्वज टर्मिनल मोड पुनर्संचयित करते.) ^ A दाबल्यावर, वापरकर्ता पाहतो की आपण "आपण कंट्रोल-ए टाइप केला" आणि प्रक्रिया एक ^ A पाठविली जाते. जेव्हा $ दाबले जाते, तेव्हा वापरकर्ता तारीख पाहतो. ^ C दाबल्यावर, एक्झिट्सची अपेक्षा करा . "Foo" प्रविष्ट केल्यास, वापरकर्ता "बार" पाहतो जेव्हा ~ ~ दाबले जाते, तेव्हा इंटरप्रीटर इंटरकनेक्टीव्ह चालवते.

सेट CTRLZ \ 032 परस्परसंवाद करा {-Retet $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "आपण एक नियंत्रण टाईप केले आहे-ए \ n"; $ {send_user} पाठवा "तारीख [घड्याळाचे सेकंद [घड्याळ सेकंद]]" आहे. "} \ 003 बाहेर पडा foo {send_user" bar "} ~~}

स्ट्रिंग-बॉडी जोड्यांमध्ये, स्ट्रिंगची ऑर्डर आल्या आहेत ज्या त्यांना आर्ग्युमेंट्स म्हणून सूचीबद्ध आहेत. अंशतः जुळलेल्या स्ट्रिंग उर्वरित येण्याच्या अपेक्षेने वर्तमान प्रक्रियेस पाठविले नाहीत. जर अक्षरे अशा प्रकारे प्रविष्ट केल्या असतील की जेणेकरुन यापुढे संभाव्य जुळणी नसेल, फक्त स्ट्रिंगचा भाग त्या प्रक्रियेस पाठविला जाईल जो संभाव्य दुसर्या सामन्याची सुरुवात करू शकत नाही. अशा प्रकारे, स्ट्रिंग जे आंशिक सामन्यांची उपस्ट्रिंग आहेत, नंतर जुळतात, जर मूळ स्ट्रिंग जुळण्यासाठी प्रयत्न करत होते तर शेवटी अपयशी होते.

डीफॉल्टनुसार, वाइल्ड कार्ड नसलेली स्ट्रिंग जुळणी अचूक आहे (याउलट, अपेक्षित आदेश भौगोलिक -शैलीतील नमुन्यांचा डिफॉल्ट द्वारे वापर करते.) -अनुवाद ध्वजांकन नमुनेच्या संरक्षणासाठी वापरले जाऊ शकते जेणेकरून इतरांशी संवाद साधता येऊ शकेल. याप्रकारे सुरु होणारी कोणतीही पॅटर्न असा संरक्षित केला पाहिजे "-" ("-" सुरू होणार्या सर्व स्ट्रिंग भावी पर्यायांसाठी आरक्षित आहेत.)

-आर ध्वज एक regexp- शैली नमुना म्हणून स्ट्रिंग व्याख्या करण्यासाठी सैन्याची सक्ती करते. या प्रकरणात, जुळणारे उपस्ट्रिंग हे व्हेरिएबल interact_out मध्ये संग्रहित केले जातात जसे की वेरिएबल expect_out मध्ये स्टोअरमध्ये त्याचे आउटपुटची अपेक्षा आहे . -संकष ध्वज समान रीतीने समर्थित आहे.

पॅटर्न eof अंत्य -फाइलवर कार्यान्वित केलेली क्रिया समाविष्ट करते एक स्वतंत्र ईओफ नमुन्यात -आउटपुट ध्वजचे देखील अनुसरण होऊ शकते ज्यामध्ये तो आउटपुट लिहिताना eof आढळल्यास त्यास जुळतात. डीफॉल्ट ईओफ कृती "रिटर्न" आहे, जेणेकरून इंटरफेस फक्त कोणत्याही ईओएफवर परत येतो.

नमुना टाइमआउट मध्ये टाइमआउट (सेकंदांमध्ये) आणि दिलेल्या वर्णनासाठी कोणतेही वर्ण वाचले गेल्यानंतर निष्पादित कार्यवाही प्रस्तुत करते. कालबाह्य नमुना सर्वात अलीकडे निर्दिष्ट केलेल्या प्रक्रियेवर लागू होतो कोणतेही डीफॉल्ट कालबाह्य नाही विशेष चल "कालबाह्य" ( अपेक्षित आदेशाद्वारे वापरलेले) या कालबाह्यतेवर काहीही परिणाम करत नाही.

उदाहरणार्थ, खालील वक्तव्यांनी ज्या वापरकर्त्यांनी तासभर काहीही टाईप केलेले नाही परंतु ज्यांना वारंवार सिस्टिम संदेश मिळत आहेत त्या स्वयंशिक्षणसाठी वापरल्या जाऊ शकतात:

परस्पर-इनपुट $ user_spawn_id कालबाह्य 3600 रिटर्न-आउटपुट \ $ spawn_id

जर नमुना श्राव्य कीवर्ड असेल आणि नलिका ( remove_nulls आदेशाद्वारे) अनुमत असेल तर, संबंधित ASCII 0 ची जुळणारी असल्यास संबंधित बॉडी कार्यान्वित केली जाते. ग्लोब किंवा regexp नमुन्यांमधून 0 बाइट्स जुळवणे शक्य नाही.

फ्लॅग ध्वजसह एक पॅटर्न पूर्ववत करण्यामुळे व्हेरिएबल इंटरएक्ट_एव (spawn_id) स्पॅन_आयडवर सेट करणे जे नमुन्याचे (किंवा ईओएफ) जुळते.

ब्रेक म्हणून क्रिया आणि कारण नियंत्रण स्ट्रक्चर्स (उदा. Proc , proc ) नेहमीच्या पद्धतीने वागणे चालू ठेवतात. तथापि परत कारणे आपल्या कॉलरकडे परत येण्यासाठी परस्पर संवाद साधते , तर इंटर-रिटरन कारण त्याच्या कॉलरमध्ये रिटर्न घेण्यास कारणीभूत होतो. उदाहरणार्थ, "proc foo" म्हणून ज्याचे इंटरफेस म्हणतात त्याने inter_return क्रिया कार्यान्वित केले , proc foo परत करेल. (याचा अर्थ असा की इंटरप्रेटर कॉल इंटरप्रिटर परस्पररित्या टाइप करण्यामुळे परस्पर संवाद सुरू राहतो, तर इंटर_रिटन त्याच्या कॉलरवर परत येण्याची संवाद साधेल.)

संवाद साधताना , रॉ मोडचा वापर केला जातो जेणेकरून सर्व वर्ण चालू प्रक्रियेस पास करता येतील. वर्तमान प्रक्रिया कार्य नियंत्रण सिग्नल मिळविणार नाही तर स्टॉप सिग्नल पाठवल्यास ते थांबेल (डीफॉल्टर ^ Z) तो पुन्हा सुरू करण्यासाठी, एक सुरू संकेत पाठवा (जसे "kill -CONT" द्वारे) आपण खरोखर अशा प्रक्रियेत (^ z) एक SIGSTOP पाठवायचे असल्यास, आधी सीएसओ टाकणे आणि नंतर आपला प्रोग्राम चालू करा. दुसरीकडे, आपण स्वत: ची अपेक्षा ठेवण्यासाठी एक SIGSTOP पाठवू इच्छित असल्यास, प्रथम कॉल इंटरप्रिटर (कदाचित सुटलेला वर्ण वापरून), आणि नंतर ^ Z दाबा.

स्ट्रिंग-बॉडी जोड्या इंटरप्रिटरमध्ये प्रवेश करणे टाळण्यासाठी लघुलिपिता म्हणून वापरली जाऊ शकतात आणि परस्पररित्या कमांड कार्यान्वित करू शकतात. स्ट्रिंग-बॉडी जोडीचे कार्य चालत असताना मागील टर्मिनल मोडचा वापर केला जातो.

गतीसाठी, मूलभूतपणे कच्च्या मोडमध्ये क्रिया चालविल्या जातात. -सेट करा फ्लॅग टर्मिनलला मोडमध्ये रीसेट करते जो आधी कार्यान्वित होता (निरपेक्षपणे, शिजविलेले मोड). लक्षात घ्या की जेव्हा मोड स्विच केले जात आहे तेव्हा प्रविष्ट केलेले वर्ण गमावले जातील (काही प्रणालींवर टर्मिनल ड्राइवरचे दुर्दैवी वैशिष्ट्य). वापरण्यासाठी एकमेव कारण म्हणजे आपली कृती शिजवलेल्या मोडमध्ये चालण्यावर अवलंबून असते.

-छा ध्वज वर्ण पाठविते जे पुढील नमुन्याशी जुळणार्या प्रक्रियेस परत आणतात ज्यामुळे प्रत्येक अक्षर वाचला जातो. वापरकर्त्याला अंशतः टाइप केलेल्या नमुन्यांकडून अभिप्राय पाहणे आवश्यक असते तेव्हा हे उपयुक्त असू शकते.

जर एक नमुना प्रतित होत असेल परंतु अखेरीस जुळत नाही, तर वर्ण तयार केलेल्या प्रक्रियेस पाठवले जातात. स्पॅन्ड प्रक्रिया नंतर त्यांना प्रतिलिपीत केल्यास, वापरकर्ता दोनदा वर्णांना दिसेल. -इंचं फक्त परिस्थितीतच योग्य आहे जिथे वापरकर्ता नमुना पूर्ण करू शकत नाही. उदाहरणार्थ, खालील excerpt rftp पासून आहे, रिकर्सिव-एफटीपी स्क्रिप्ट, जिथे युजरला ~ g, ~ p, किंवा ~ l ला प्रविष्ट करण्यास सांगितले जाते, वर्तमान पृष्ठास मिळविण्यासाठी, ती ठेवण्याची किंवा सूचीबद्ध करणे. हे सामान्य एफटीपी आदेशांपासून इतके दूर आहेत की, वापरकर्त्याला चुकून वगळता दुसरे काहीही टाईप करणे संभव नाही, ज्या प्रकरणात चुकून वगळता, ते कदाचित तरीही परिणामांकडे दुर्लक्ष करतील.

{-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -e ~ ~ {putcurdirectory}} सह संवाद साधा

-nobuffer ध्वज वर्ण पाठविते जे वर्णाप्रमाणे वाचल्या जाणाऱ्या परिणामांवर खालील नमुन्याशी जुळतात.

हे उपयोगी आहे जेव्हा आपण प्रोग्रामला नमुना परत गृहित ठेवू इच्छित असाल. उदाहरणार्थ, एखादी व्यक्ती डायलिंग करीत असल्यास (हाय हेस-शैली मोडेम) निरीक्षण करण्यासाठी खालील वापरले जाऊ शकते. "Atd" प्रत्येक वेळी स्क्रिप्ट ओळीच्या ओळीला लॉग दिसेल.

विक्रय $ interact_out (1, स्ट्रिंग) "} इंटरफेस- nobuffer" atd "लॉगनम्बर {} {interact-nobuffer -re" (*. *) \ r "return puts $ log" [घड्याळ स्वरूप [घड्याळ सेकंद]]:

संवाद साधताना , log_user च्या आधीच्या वापराकडे दुर्लक्ष केले जाते. विशेषतः, संवाद साधणे त्याच्या आउटपुटला लॉग (लॉग इन (मानक आउटपुटवर पाठविल्यास) लागू करेल कारण असे गृहीत धरले आहे की वापरकर्ता अंधुकपणे संवाद साधू इच्छित नाही.

-o ध्वज वर्तमान प्रक्रियेच्या आऊटपुटस लागू करण्यासाठी खालील कोणतेही मुख्य-शरीर जोड्या करतो . हे उपयोगी असू शकते, उदाहरणार्थ, होस्टने हाताळताना जे टेलनेट सत्र दरम्यान अवांछित वर्ण पाठविते.

डीफॉल्टनुसार, युजरला stdin लिहण्याची आणि Expect प्रोसेसच्या stdout ची वाचण्याची अपेक्षा करते. -यू ध्वज ("वापरकर्ता" साठी) वापरकर्त्यासाठी त्याच्या परस्परविरोधी नावाच्या प्रक्रियेस (जे स्पॅन्ड आयडी असणे आवश्यक आहे) म्हणून संवाद साधते .

हे दोन असंबंधित प्रक्रियांना स्पष्ट लूप वापरून एकत्र सामील होण्यास अनुमती देते. डिबग करण्यास मदत करण्यासाठी, निदानाची अपेक्षा नेहमी stderr (किंवा विशिष्ट लॉगिंग आणि डीबगिंग माहितीसाठी स्टँडिंग) वर जाते. याच कारणास्तव, इंटरप्रिटर आज्ञा stdin पासून परस्पररित्या वाचली जाईल.

उदाहरणार्थ, पुढील तुकडा लॉगिन प्रक्रिया तयार करते. मग तो वापरकर्ता (नाही दर्शविले) डायल करते आणि शेवटी दोघांनाही एकत्र जोडते. नक्कीच, लॉग इनसाठी कोणतीही प्रक्रिया बदलली जाऊ शकते. शेल, उदाहरणार्थ, वापरकर्ता खाते आणि पासवर्ड न देता काम करण्याची परवानगी देईल.

स्पॉन लॉगइन सेट लॉगिन $ spawn_id स्पॉन टिप मोडेम # वापरकर्त्यास परत डायल करा # लॉगिन करण्यासाठी user ला कनेक्ट करा -u $ लॉगिन

एकाधिक प्रक्रियेसाठी आउटपुट पाठविण्यासाठी, आउटपुट फ्लॅगद्वारे सेट केलेल्या प्रत्येक स्पॉन id सूचीस सूचीबद्ध करा. आउटपुट स्पॅन आयडीच्या एका गटासाठी इनपुट हे इनपुट ऑब्जेक्ट द्वारे निर्धारित केले जाऊ शकते, जो -इनपुट फ्लॅगद्वारे सुचवले आहे . ( -इनपुट आणि -outपुट दोन्ही एकाच स्वरूपात यादी घेऊ शकतात -i फ्लॅग अपेक्षित आदेशामध्ये, त्याव्यतिरीक्त कोणतेही स्पॅनिश_आयडी इंटरॅक्टमध्ये अर्थपूर्ण नसते.) खालील सर्व ध्वज आणि स्ट्रिंग (किंवा पॅटर्न) या इनपुटवर लागू होतात जोपर्यंत दुसरे - इनपुट ध्वजांकन दिसेल. जर नाही -इनपुट दिसत असेल, तर -आउटपुट अर्थ "-input $ user_spawn_id -output" (त्याचप्रमाणे, नमुन्यांसह- इनपुट नसल्यास). जर एक- इनपुट निर्धारीत केले असेल तर ते $ user_spawn_id अधिलिखित करते. दुसरे- इनपुट निर्दिष्ट केले असल्यास, ते $ spawn_id अधोरेखित करते अतिरिक्त- इनपुट फ्लॅग्ज निर्दिष्ट केले जाऊ शकतात.

दोन निहित इनपुट त्यांच्या इनपुट्स $ spawn_id आणि $ user_spawn_id (उल्लेखितमध्ये) निर्दिष्ट केलेल्या डीफॉल्टवर कार्य करते. जर एखादा इनपुट- ध्वज ना- आउटपुट ध्वजसह आढळतो, त्या प्रक्रियेतील वर्ण टाकून दिले जातात.

-i फ्लॅग वर्तमान spawn_id साठी बदलण्याची शक्यता आहे जेव्हा इतर कोणतेही -इनपुट किंवा -आउटपुट ध्वजांकन वापरले जात नाही ए-आय ध्वज एक-ओ ध्वज सूचित

अप्रत्यक्ष spawn id वापरून त्यांच्याशी संवाद साधलेल्या प्रक्रिया बदलणे शक्य आहे. (अप्रत्यक्ष स्पॉन आयडीला अपेक्षित आदेशाच्या विभागात वर्णन केले आहे.) अप्रत्यक्ष स्पॉन आयडी -i, -u, -input, किंवा -output flags सह निर्दिष्ट केले जाऊ शकतात.

दुभाषा [आर्गस]
वापरकर्त्याला Expect व Tcl आदेशांकरिता परस्पररित्या विचारण्याजोगी कारणीभूत ठरते. प्रत्येक कमांडचा परिणाम प्रिंट होतो.

ब्रेक म्हणून क्रिया आणि कारण नियंत्रण स्ट्रक्चर्स (उदा. Proc , proc ) नेहमीच्या पद्धतीने वागणे चालू ठेवतात. तथापि परताव्यामुळे इंटरप्रीटरला त्याच्या कॉलरकडे परत जाण्याची शक्यता असते, आणि इंटर-ऑपरेटिवने त्याच्या कॉलरमध्ये पुनरागमन होऊ शकते. उदाहरणार्थ, "proc foo" इंटरप्रीटर म्हणजे ज्याने इंटररेटरीत क्रिया अंमलात आणली, proc foo परत करेल. कुठल्याही इतर कमांडमुळे इंटरप्रेटरला नवीन कमांडस्साठी प्रॉम्प्ट चालू ठेवणे शक्य होते.

डिफॉल्ट द्वारे, प्रॉम्पट मध्ये दोन integers असतात. प्रथम पूर्णांक मूल्यांकन स्टॅकची खोली (उदा. किती वेळा Tcl_Eval म्हटले गेले आहे) चे वर्णन करते दुसरा पूर्णांक हा Tcl इतिहास ओळखकर्ता आहे. प्रॉम्प्ट "prompt1" नावाची एक प्रक्रिया निश्चित करून सेट केली जाऊ शकते ज्याचे परतीचे मूल्य पुढील प्रॉमप्ट असेल. जर एखाद्या निवेदनामध्ये खुले कंस, पॅरन्स, ब्रेसेस किंवा ब्रॅकेट्स आहेत, तर एक नवीन संकेत (डिफॉल्ट "+>") नवीनलाईनवर जारी केला जातो. "Prompt2" नावाची कार्यपद्धती निश्चित करून दुय्यम संकेत निश्चित केला जाऊ शकतो.

दुभाषा दरम्यान, शिजवलेले मोड वापरले जाते, जरी त्याचा कॉलर कच्चा मोड वापरत असला तरी

जर स्टुडीन बंद असेल, तर इफेरेपर्स परत येईल जोपर्यंत -एफफ्लॅगचा वापर केला जात नाही, ज्या बाबतीत पुढच्या आर्ग्युमेंटची मागणी केली जाते.

लॉग_फाइल [आर्गस] [[-ए] फाईल]
फाईलनाव प्रदान केल्यास, log_file फाइलमधील सत्रची उतारा रेकॉर्ड करेल (त्या वेळी सुरूवात करेल). कोणतेही वितर्क दिले नसल्यास लॉग_फाइल रेकॉर्डिंग थांबवेल. कोणतीही मागील लॉग फाइल बंद आहे.

फाइलनावच्या ऐवजी ,- Tcl फाइल ओळखकर्ता -ऑनलाइन किंवा -वेव्हॅप फ्लॅगचा वापर करून प्रदान केला जाऊ शकतो. हे स्पॉन कमांड सारखं आहे. (अधिक माहितीसाठी फॉन पहा.)

Log_user आदेशाने दडलेला -A फ्लॅग फ्लॅग फ्लॅट्स आउटपुट.

पूर्वनिर्धारीतपणे, log_file आदेश जुने फाइल्स ऐवजी छेदण्याऐवजी , लॉगींग चालू करण्यास व एका अधिवेशनात बहुविध वेळी फाइल्स तुटण्यासाठी , -nopend फ्लॅगचा वापर करा

-finfo log_file ला सर्वात नवीन गैर-माहिती आर्ग्युमेंट्सचे वर्णन परत करण्यास कारणीभूत करतो.

log_user -info | 0 | 1
पूर्वनिर्धारीतपणे, पाठवा / अपेक्षित संवाद stdout (व उघडा असल्यास लॉगीफाइल) लॉग आहे. "Log_user 0" द्वारे stdout वरील लॉगिंग अकार्यक्षम केले आहे आणि "log_user 1" द्वारे पुन्हा केले आहे. लॉगफाइलवर लॉगिंग बदलत नाही.

-finfo फ्लॅगला log_user ला दिलेल्या सर्वात अलीकडील गैर-माहिती वितर्कांचे वर्णन परत करण्यास कारणीभूत ठरते.

match_max [-d] [-i spawn_id] [आकार]
अपेक्षितपणे अंतर्गत वापरलेल्या बफरचा आकार (बाइट्समध्ये) परिभाषित करते आकार वितर्क नसल्याने, वर्तमान आकार परत केला जातो.

-d फ्लॅगसह, डीफॉल्ट आकार सेट केला जातो. (इनिशिअल डिफॉल्ट 2000 आहे.) -i ध्वजसह, आकार नामित स्पॉन आयडीसाठी सेट आहे, अन्यथा तो चालू प्रक्रियेसाठी सेट आहे

ओव्हरल [[# spawn_id] [- # spawn_id] [...] प्रोग्राम [args]
वर्तमान अपेक्षित कार्यक्रमाच्या जागी "प्रोग्राम आर्गल्स" कार्यान्वित करते, जे संपते. एक बेअर हायफन वितर्क कमांडच्या नावापुढे एक हायफेन बांधील आहे जसे की तो लॉगिन शेल होता. सर्व spawn_ids हे आर्ग्यूमेंट्स नावाच्या वगळता बंद आहेत. हे नावाच्या फाइल आइडेंटिफायर्सवर मॅप केले जातात.

Spawn_ids यांना वारसाहक्काने मिळालेल्या नवीन कार्यक्रमासाठी आयडेंटिफायर्स फाईल करण्यासाठी मॅप केले आहे. उदाहरणार्थ, खालील ओळ शतरंज चालवते आणि त्यास चालू प्रक्रियेद्वारे नियंत्रित करण्याची परवानगी देते - म्हणा, शतरंज मास्टर.

ओव्हरले -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id शतरंज

हे "संवाद-अ" पेक्षा अधिक प्रभावी आहे, तथापि, हे प्रोग्रॅम क्रमात करण्याची क्षमता देण्याची क्षमता आहे कारण अपेक्षित प्रक्रिया नियंत्रणात नाही.

लक्षात घ्या की कोणतेही नियंत्रण टर्मिनल उपलब्ध नाही. त्यामुळे, आपण मानक इनपुट डिस्कनेक्ट किंवा रीपॅप केल्यास, कार्य नियंत्रण (शेल, लॉग इन इ.) करणार्या प्रोग्राम्स योग्यरित्या कार्य करणार नाहीत.

पॅरिटि [-ड] [-i स्पॉन_आयड] [मूल्य]
परिभाषित करते की समानता तशीच ठेवावी किंवा स्पॉन्ड प्रक्रियेच्या आऊटपुटमधून काढून टाकली पाहिजे. जर मूल्य शून्य असेल तर समता काढून घेण्यात आली आहे अन्यथा ती काढून टाकलेली नाही. मूल्य मूल्यांकनासह , चालू मूल्य परत केले जाते.

-d फ्लॅगसह, डीफॉल्ट पॅरिटी मूल्य सेट केले जाते. (इनिशिअल डिफॉल्ट 1 आहे म्हणजेच पॅरिटी त्रेन नाही.) -i फ्लॅगसह, पॅरिटि व्हॅल्यू नामित स्पॉन आयडीसाठी सेट आहे, अन्यथा तो चालू प्रक्रियेसाठी सेट आहे.

remove_nulls [-d] [-i spawn_id] [मूल्य]
nulls राखून ठेवल्या आहेत किंवा वेरिएबल expect_out किंवा interact_out मधील पॅटर्न जुळणी किंवा संचयित करण्यापूर्वी स्पॉन्ड प्रक्रियेच्या आऊटपुटमधून काढून टाकल्याची व्याख्या करते. मूल्य 1 असल्यास, रद्द केले जातात. मूल्य 0 असल्यास, नल काढून टाकले जात नाही मूल्य मूल्यांकनासह , चालू मूल्य परत केले जाते.

-d फ्लॅगसह, डीफॉल्ट मूल्य सेट केले आहे. (प्रारंभिक डीफॉल्ट 1 आहे, म्हणजेच, रद्द केले जातात.) -i ध्वजसह, मूल्य नामित स्पॉन आयडीसाठी सेट केले जाते, अन्यथा ते वर्तमान प्रक्रियेसाठी सेट केले आहे.

नलिका काढून टाकल्या किंवा नाहीत, अपेक्षेने लॉग आणि स्टॅडआउटसाठी रिक्त बाइट्स रेकॉर्ड करतील.

[-flags] स्ट्रिंग पाठवा
वर्तमान प्रक्रियेसाठी स्ट्रिंग पाठवा. उदाहरणार्थ, आदेश

"हॅलो जागतिक \ r" पाठवा

वर्ण, helloworld वर्तमान प्रक्रिया पाठवते. (Tcl मध्ये printf -like आदेश समाविष्टीत आहे (नावाचे स्वरूप ) जे आपोआप जटिल स्ट्रिंग तयार करू शकतात.)

अक्षरे तात्काळ पाठविली जातात जरी लाइन-बफरच्या इनपुटसह प्रोग्रॅम्स वर्ण वाचणार नाहीत जोपर्यंत रिटर्न वर्ण पाठवले जात नाही तोपर्यंत. एक रिटर्न वर्ण "\ r" असे दर्शवले जाते.

- ध्वज पुढील ध्वजांना ध्वज म्हणून नव्हे तर एका स्ट्रिंग म्हणून लावण्यात येईल. कोणताही स्ट्रिंग अगोदरच "-" असेल तर तो फ्लॅगसारखा दिसतो किंवा नाही. हे व्हीलर स्ट्रिंग दर्शविण्याजोगी विश्वसनीय यंत्रणा प्रदान करते जे चुकीने फ्लॅगसारखे दिसतात. ("-" सुरू होणार्या सर्व स्ट्रिंग भावी पर्यायांसाठी आरक्षित आहेत.)

-i फ्लॅग घोषित करते की ही स्ट्रिंग नावाच्या spawn_id वर पाठविली जाईल. जर spawn_id user_spawn_id असेल , आणि टर्मिनल कच्च्या मोडमध्ये असल्यास, स्ट्रींगमधील नवीन ओळींना नवीन-नवीन अनुक्रमांमध्ये भाषांतरित केले जाते जेणेकरून ते टर्मिनल शिजविलेले मोडमध्ये दिसून येतील. -व्या ध्वज हा अनुवाद अक्षम करतो

-मुक्त ध्वज निरर्थक वर्ण (0 बाइट्स) पाठवितो. डिफॉल्टद्वारे, एक शून्य पाठविला जातो. एक पूर्णांक किती अनधिकृत पाठवू शकतो हे दर्शवण्यासाठी -अनुसरण करू शकते.

-break ध्वज एक ब्रेक अट निर्माण स्पॉन id हे "स्पॅन-ओपेन" द्वारे उघडलेल्या टीटीआय उपकरणांकडे संदर्भित करते तेव्हाच हेच अर्थ प्राप्त होते. आपण एखाद्या टिपसारखी प्रक्रिया तयार केली असल्यास, आपण ब्रेक तयार करण्यासाठी टिपच्या अधिसूचनाचा वापर करावा.

-s च्या ध्वज शक्तीचे उत्पादन "हळूहळू" पाठविले जाणे, अशा प्रकारे सामान्य परिस्थिती टाळण्यासाठी जिथे एका कॉम्प्यूटरने इनपुट बॉफर तयार केले आहे जे अशा मनुष्यासाठी डिझाइन केले आहे जे समान बफरचे बाह्य स्वरूप कधीही करणार नाहीत. हे आऊटपुट "send_slow" व्हेरिएबलच्या व्हॅल्यूद्वारे नियंत्रित होते ज्यास दोन एलिमेंट्स सूची लागते. पहिला घटक पूर्णांक आहे जो परमाणु पाठविण्यासाठी बाइट्सची संख्या याचे वर्णन करतो. दुसरा घटक एक वास्तविक संख्या आहे जो अणूंनी पाठविलेल्या सेकंदाच्या संख्येचे वर्णन करतो. उदाहरणार्थ, "पाठवा send_slow {10.001}" "पाठविण्यास" जबरदस्तीने पाठविलेल्या प्रत्येक 10 वर्णांदरम्यान 1 मिलीसेकंदसह स्ट्रिंग पाठविण्यास सक्ती करेल.

-एच ध्वज फडफड फॉर आउटपुट (काहीसे) जसे की प्रत्यक्षात एक मानवी टाइपिंग. वर्णांसारखे मानवी-विलंब दिसा. (अल्गोरिदम हा वेब्यूल वितरणावर आधारित आहे, या विशिष्ट अनुप्रयोगाच्या अनुरूप बदल करण्यासह.) हे आऊटपुट "send_human" व्हेरिएबलच्या व्हॅल्यूद्वारे नियंत्रित केले आहे ज्यास पाच घटक सूची लागते. पहिला दोन घटक सेकंदांमध्ये वर्णनाची सरासरी आंतरराष्टीय वेळ आहे. प्रथम डीफॉल्टनुसार वापरले जाते. दुस-या शब्दाचा वापर शब्दाच्या अखेरीस केला जातो, अशी सूक्ष्म विराम द्यावी की कधीकधी अशा संक्रमणे होतात. तिसरे मापदंड ही एक परिवर्तनीय माप आहे जिथे -1 खूप व्हेरिएबल आहे, 1 फारच फरक आहे, आणि 10 हे फार अचल आहे. कमाल अनारता 0 आहेत. शेवटचे दोन पॅरामीटर अनुक्रमे, किमान आणि जास्तीत जास्त आंतरराष्ट्र वेळेचे आहेत. किमान आणि कमाल अंतिम वापरले जातात आणि अंतिम वेळी "क्लिप" किमान आणि कमाल क्लिप पर्याप्त मूल्यांकनांना दिलेल्या सरासरीपेक्षा अंतिम सरासरी बरेच भिन्न असू शकते.

उदाहरण म्हणून, खालील आदेश वेगवान आणि सातत्यपूर्ण टिपलेखनाचे अनुकरण करतो:

send_human सेट करा {1.33 .05 2} पाठवा- "मी भुकेलेला आहे, लंच करुया."

हॅन्डओव्हर नंतर पुढील योग्य असू शकतात:

send_human सेट करा .4.5 .5 100} पाठवा-एच "गुडक्ड पार्टी लॅश राइट!"

लक्षात घ्या की चुका सिम्युलेटेड नाहीत, परंतु आपण दोष वितरीत करुन आणि तर्क वितरीत सुधारण्याद्वारे त्रुटी सुधारणा स्थिती स्वत: सेट करू शकता.

निरर्थक अक्षरे पाठविण्यासाठी झेंडे, ब्रेक पाठविण्यासाठी झपाणि, हळु उत्पादनास चालना देण्यासाठी आणि मानवी-शैलीच्या आउटपुटसाठी परस्पर वेगळे आहेत शेवटचे निर्दिष्ट केलेले फक्त एकच वापरले जाईल. शिवाय, निरर्थक वर्ण किंवा खंड पाठविण्याकरिता ध्वजांकनासह कोणतीही स्ट्रिंग वितर्क निर्दिष्ट करता येऊ शकत नाही

अपेक्षेने प्रक्रियेस प्रथम पाठवण्याआधी एक चांगली कल्पना आहे. अपेक्षित प्रक्रिया सुरू होण्याची प्रतीक्षा करेल, तर पाठवणे शक्य नाही. विशेषतः, प्रक्रिया सुरू होण्यापूर्वी प्रथम पाठ पूर्ण झाल्यास, आपण आपला डेटा दुर्लक्षित केल्याचा धोका चालवता. अशा घटनांमध्ये जिथे परस्पर कार्यक्रम प्रारंभिक प्रॉमप्ट देत नाहीत, आपण पुढील प्रमाणे विलंबाने पाठवू शकता:

# हॅकिंग कसे टाळायचे हे संकेत देत नाही, # हे सिस्टीम एका बाह्य पासवर्डसाठी विचारत नाही. # स्पॅन टेलनेटसाठी पूर्ण करण्यासाठी 5 सेकंदाची प्रतीक्षा करा .secure.gov सोडा 5 पासवर्ड पाठवा \ r

exp_send पाठवासाठी उपनाव आहे . आपण पर्यावरणक्षेत्रात अपेक्षित किंवा अपेक्षेचा इतर प्रकार वापरत असल्यास, पाठवा पूर्णतया वेगळ्या हेतूसाठी रुपये परिभाषित केले आहे. exp_seend वातावरणातील सुसंगततेसाठी प्रदान केले आहे इतर अपेक्षेनुसार अन्य पाठवा आदेशांसाठी समान उपनाम प्रदान केले जातात.

पाठवा_error [-फलाग] स्ट्रिंग
हे पाठविण्यासारखेच आहे , परंतु हे उत्पादन सध्याच्या प्रक्रियेऐवजी stderr ला पाठविले जाते.

send_log [-] स्ट्रिंग
पाठविण्याच्या प्रकाराच्या असल्याशिवाय, फक्त स्ट्रिंग केवळ लॉग फाइलवर (लॉग-फाईल पहा) पाठविली जाते. जर लॉग फाईल उघडलेली नसेल तर वितर्कांना दुर्लक्ष केले जाते.

send_tty [-fags] स्ट्रिंग
हे पाठविण्यासारखेच आहे , परंतु सध्याच्या प्रक्रियेऐवजी आउटपुट send / dev / tty कडे पाठविले जाते.

send_user [-flags] स्ट्रिंग
हे पाठविण्यासारखे आहे , परंतु ते फक्त वर्तमान प्रक्रियेऐवजी stdout कडे पाठविले जाते.

सेकंद झोपणे
दिलेल्या सेकंदांकरिता स्क्रिप्ट झोपण्यासाठी कारणीभूत ठरते. सेकंद एक दशांश संख्या असू शकते. व्यत्यय (आणि जर आपण एखादे इव्हेंट वापरत असल्यास अंदाजपत्रक) प्रतीक्रिया केली जाते तेव्हा झोपेची अपेक्षा होते.

स्पॉन [आर्गस] प्रोग्राम [आर्गस]
"प्रोग्राम अर्गस" चालवित नवीन प्रक्रिया तयार करते त्याची stdin, stdout आणि stderr अपेक्षित जोडलेले आहेत, जेणेकरून ते इतर अपेक्षा आदेशांद्वारे वाचले आणि लिहीले जाऊ शकतात. कनेक्शन बंद करून तोडलेला आहे किंवा प्रक्रिया स्वतःच कोणत्याही फाइल आइडेंटिफायर्स बंद करते.

स्पॉन द्वारे प्रक्रिया सुरू झाल्यानंतर, चलन spawn_id त्या प्रक्रियेचा संदर्भ देणार्या वर्णनकर्त्यावर सेट आहे. Spawn_id द्वारे वर्णित प्रक्रिया " वर्तमान प्रक्रिया " म्हणून ओळखली जाते. spawn_id प्रभावीपणे जॉब कंट्रोल प्रदान करतेवेळी वाचले किंवा लिहीले जाऊ शकते.

user_spawn_id एक ग्लोबल वेरियेबल आहे ज्यात एक वर्णनकर्ता असतो जो वापरकर्ताला संदर्भ देतो. उदाहरणार्थ, जेव्हा spawn_id हे मूल्य सेट केले जाते, तेव्हा अपेक्षा अपेक्षित आहे- वापरकर्ता

. Error_spawn_id एक वैश्विक व्हेरिएबल आहे ज्यामध्ये एक वर्णनकर्ता आहे जो मानक त्रुटी संदर्भात आहे. उदाहरणार्थ, जेव्हा spawn_id ला हे मूल्य सेट केले जाते, send_error सारखे वर्तन पाठवा

tty_spawn_id एक ग्लोबल वेरियेबल आहे ज्यात वर्णनकर्ता समाविष्ट आहे / dev / tty. / Dev / tty अस्तित्वात नसल्यास (जसे क्रोन, येथे, किंवा बॅच स्क्रिप्टमध्ये), तर tty_spawn_id निश्चित नाही. याचे परीक्षण केले जाऊ शकते:

{{info vars tty_spawn_id}} {# / dev / tty अस्तित्वात आहे} अन्यथा {# / dev / tty अस्तित्वात नाही # कदाचित क्रोन, बॅच, किंवा स्क्रिप्टमध्ये]

स्पॉनने UNIX प्रक्रिया id परत केले जर कोणत्याही प्रक्रियेची निर्मिती झाली नाही, तर ती परत मिळेल. वेरियेबल spawn_out (slave, name) pty slave साधनच्या नावावर सेट केले जाते.

डिफॉल्ट द्वारे, स्पॉन आज्ञा नाव आणि आर्ग्यूमेंट्स घेते. नॉक्सो ध्वज फॉरेनला हे करीत नाही.

-console ध्वज कणसाखा व्यूहरचित व्युत्पन्न प्रक्रियेस पुनर्निर्देशित करण्याकरिता कारणीभूत आहे. हे सर्व सिस्टीमवर समर्थित नाही.

आंतरिकपणे, स्पॉन एक पीटी वापरते, वापरकर्त्याच्या टीटीआय प्रमाणेच आरंभ केला. हे आणखी सुरू केले गेले आहे ज्यामुळे सर्व सेटिंग्ज "समजूतदार" असतील (stty (1) नुसार). जर stty_init व्हेरिएबल निर्धारित केले असेल तर पुढील कॉन्फिगरेशनच्या रूपात स्टिटी आर्ग्युमेंटच्या शैलीमध्ये त्याचा अर्थ लावला जातो. उदाहरणार्थ, "stty_init raw सेट करा" पुढे स्पॉन्ड् प्रोसेसचे टर्मिनल्सला रॉ मोडमध्ये सुरू करण्यास कारणीभूत ठरेल. -nottycopy वापरकर्त्याच्या tty वर आधारीत प्रारंभिकता वगळतो. -nottyinit "समजूतदार" आरंभीची वगळली

साधारणपणे, अंडे चालवण्यासाठी थोडा वेळ लागतो. जर आपणाकडे लक्ष देण्यासारख्या लक्षणीय रक्कम घेतल्यास त्याचा अंदाज येतो, ते कदाचित पीटीज सारख्या दिसणा-यांशी जुळतात. बर्याच प्रक्रियेसह विसंगतता टाळण्यासाठी अनेक चाचण्या ptys वर चालतात. (हे प्रत्येक wedged pty साठी 10 सेकंद लागू शकतात.) अ-स्थितीत अनेक ptys मिळविण्याची अपेक्षा असल्यास -d ऑप्षन्सची अपेक्षा करणे दर्शवेल. ज्या पी.के.एस. जोडलेल्या प्रक्रिया आपण मारू शकत नाही, तर तुमचे फक्त रिबूट रिबूट होण्याची शक्यता आहे.

जर exec यशस्वी होऊ शकत नसल्यास exec (2) अयशस्वी (उदा. प्रोग्रॅम अस्तित्वात नसल्यास), पुढील इंटरॅक्टद्वारे एक त्रुटी संदेश दिला जाईल किंवा अशी आज्ञा अपेक्षा असेल जसे की कार्यक्रमाने चालविल्या आणि त्रुटी संदेश आऊटपुट म्हणून तयार केले. हा व्यवहार म्हणजे अंडयातील अंमलबजावणीचा नैसर्गिक परिणाम. आंतरिकपणे, स्पॉन फोर्क्स, त्यानंतर तयार केलेल्या प्रक्रियेला spawn_id द्वारे संप्रेषण वगळता मूळ अपेक्षि प्रक्रियेसह संवाद साधण्याचा कोणताही मार्ग नाही.

-पुढला ध्वज पुढील तर्क एक Tcl फाइल अभिज्ञापक (म्हणजे, मुक्त द्वारे परत) म्हणून अर्थ लावणे कारणीभूत आहे. स्पॉन आयडी नंतर अस्तित्वात होते तसे असे होऊ शकते. (फाइल अभिज्ञापक यापुढे वापरले जाऊ नये.) यामुळे आपल्याला कच्च्या डिव्हाइसेस, फाईल्स आणि पाईपलाईनचा वापर केला जाऊ शकतो जसे की पीटी वापरल्याशिवाय स्पॉन्ड प्रक्रिया संबंधित प्रक्रिया नसल्याचे दर्शविण्यासाठी 0 दिले आहे. व्युत्पन्न प्रक्रियेस जोडणी बंद केली जाते तेव्हा Tcl फाइल आइडेंटिफायर असे आहे. -व्यक्तिवाचक ध्वज -व्यक्ती त्याव्यतिरीक्त -व्यक्तिविहीन id बंद झाल्यानंतर देखील -वेव्होपेन फाइल आइडेंटिफायर उघडले जाऊ शकते.

रिक्त ध्वज एक pty उघडले जाऊ शकते परंतु कोणतीही प्रक्रिया तयार केली नाही. संबंधित प्रक्रिया नसल्याचे दर्शविण्यासाठी 0 दिले आहे. Spawn_id नेहमीप्रमाणे सेट आहे

वेरियेबल spawn_out (slave, fd) pty slave शी संबंधित फाइल आइडेंटिफायरकरिता सेट केले जाते. हे "क्लोज-स्लेव्ह" वापरून बंद केले जाऊ शकते.

स्पॅनिश प्रक्रियेमध्ये साइन-इगर फ्लॅगकडे दुर्लक्ष करण्यासाठी सिग्नलचे नाव आहे अन्यथा, संकेतांना डीफॉल्ट वर्तन मिळते. सिग्नल हे नावाच्या नावाच्या ट्रॅप आदेशाप्रमाणे आहेत, प्रत्येक सिग्नलसाठी वेगळा ध्वज आवश्यक आहे.

स्ट्रेस स्तर
खालील विधाने अंमलात येण्यापूर्वी मुद्रित करणे कारणीभूत होते. (टीसीएलचे ट्रेस कमांड व्हेरिएबल्स चे मापन करते.) स्तर दर्शविलेल्या कॉल स्टॅकपर्यंत किती दूर निर्देशीत करते. उदाहरणार्थ, खालील आदेश कॉलची पहिले 4 स्तर ट्रेस करणे अपेक्षित आहे , परंतु त्याखेरीज खालील कोणीही नाही

अपेक्षित- c "strace 4" script.exp

-एन्फो ध्वज Strace ला दिलेल्या सर्वात अलीकडील गैर-माहिती आर्ग्युमेंट्सचे वर्णन परत करण्याकरिता वापरते

stty args
बाह्य स्टॉटी कमांड प्रमाणेच टर्मिनल मोडमध्ये बदल होतो.

डिफॉल्ट द्वारे, कंट्रोलिंग टर्मिनल ऍक्सेस केलेला आहे. इतर टर्मिनलमध्ये "आदेशांची पूर्तता करण्याच्या विनंतीसाठी स्थितीसाठी विनंती" लावून प्रवेश करता येतो. जर कोणत्याही स्थितीची विनंती केली जात नाही आणि नियंत्रक टर्मिनलवर प्रवेश केला तर, कच्च्या आणि प्रतिध्वनी गुणधर्मांची मागील स्थिती परत त्या स्वरूपात दिली जाते जी नंतर आदेश द्वारे वापरले

उदाहरणार्थ, कच्चे किंवा कूच केलेले आर्ग्युमेंट्स टर्मिनलला कच्च्या मोडमध्ये ठेवतात. वितर्क- आलेले किंवा शिजवलेले मुळ टर्मिनल पॅक केलेल्या मोडमध्ये ठेवा. आर्ग्यूमेंट्स इको आणि -आचो टर्मिनल ला अनुक्रमे इको आणि नॉटो मोडमध्ये ठेवतात.

खालील उदाहरणावरून स्पष्ट दिसते की प्रतिध्वनी अस्थायीपणे कसे अक्षम करावे. हे त्यामधील एम्बेडिंग संकेतशब्द टाळण्यासाठी अन्य-स्वयंचलित स्क्रिप्टमध्ये वापरले जाऊ शकते. (खाली या भागावर आधारित अधिक चर्चा पहा.)

stty -echo send_user "पासवर्ड:" expect_user -re "(. *) \ n" पासवर्ड सेट करा $ expect_out (1, स्ट्रिंग) stty echo

सिस्टीम आर्गस
input ( एआरजे) ला sh (1) इनपुट म्हणून देते, जसे की टर्मिनलवरून कमांड म्हणून टाईप केले आहे. शेल समाप्त होईपर्यंत प्रतीक्षा करत रहा Sh ची परताव्याची स्थिती त्याच प्रकारे हाताळली जाते की exec त्याच्या परतावा स्थिती हाताळते.

Exec च्या उलट जे stdin आणि stdout स्क्रिप्टला पुनर्निर्देशित करते, प्रणाली रिडायरेक्शन (स्ट्रिंग स्वतःच सूचित केलेल्या पेक्षा इतर) करते. अशा प्रकारे प्रोग्राम वापरणे शक्य आहे जे / dev / tty शी थेट बोलले पाहिजे. याच कारणासाठी, सिस्टमचे परिणाम लॉगमध्ये रेकॉर्ड केलेले नाहीत.

टाइमस्टॅम्प [आर्गस]
एक टाइमस्टॅम्प परत युक्ती झाल्यापासून कुठलीही बाब नाही, सेकंदांची संख्या.

-फॉर्म फ्लॅग मध्ये एक स्ट्रिंग आहे जो परत आहे परंतु स्प्रॉटाईम साठी POSIX नियमांनुसार केलेल्या बदल्यात आहे. उदाहरणासाठी% a संक्षिप्त आठवड्याच्या नावानंतर (म्हणजेच, शनि) बदलले आहे. इतर आहेत:

% एक संक्षिप्त आठवडा नाव% एक पूर्ण आठवड्यातील दिवस% ब संमिश्र महिना नाव% ब पूर्ण महिना नाव% ग तारीख वेळ म्हणून: बुध ऑक्टो 6 11:45:56 1993% महिन्याच्या% d दिवस (01-31% H तास (00-23)% मी तास (01-12)% जे दिवस (001-366)% मी महिना (01-12)% मि मिनिट (00-59)% पी किंवा दुपारी% एस सेकंद (00-61) % u दिवस (1-7, सोमवार हा आठवड्याचा पहिला दिवस आहे)% U आठवड्यात (00-53, पहिला रविवार आठवड्याच्या पहिल्या दिवसाचा आहे)% वी हप्ता (01-53, आयएसओ 8601 शैली)% w दिवस (0- 6)% आठ आठवड्यात (00-53, पहिला सोमवार हा आठवड्याचा पहिला दिवस आहे)% x तारखेनुसार वेळ: बुध ऑक्टो 6 1993% मध्ये एक्स वेळ: 23:59:59% y वर्ष (00-99) % Y वर्ष म्हणून: 1993% Z वेळक्षेत्र (किंवा निर्धारित करण्यायोग्य नसल्यास काहीही) %% बेअर टक्के चिन्ह

इतर% विशिष्टता अपरिभाषित आहेत. इतर वर्ण अछूते द्वारे पारित केले जातील फक्त C लोकॅल समर्थित आहे.

युवराज ज्या स्वरुपन स्वरुपात वापरला जाण्यापासून-सेकंदांचे ध्वजांकने कित्येक सेकंदांची ओळख करून देतात अन्यथा, वर्तमान वेळ वापरला जातो.

GMT टाईमझोन वापरण्यासाठी -जीएमटी फ्लॅग टाइमस्टॅम्प आउटपुट वापरतो. ध्वज न होता, स्थानिक टाइमझोन वापरला जातो.

सापाने [[कमांड] सिग्नल]
दिलेले कमांड भविष्यात मिळवलेल्या कुठल्याही सिग्नलवर मिळाल्याबद्दल कारणीभूत ठरते. ही आज्ञा जागतिक व्याप्तीमध्ये अंमलात येईल. जर आज्ञा अनुपस्थित असेल, तर सिग्नल क्रिया परत केली जाईल. जर आज्ञा SIG_IGN स्ट्रींग असेल तर सिग्नलकडे दुर्लक्ष केले जाते. जर आज्ञा SIG_DFL असेल तर, संकेत सिस्टीम डीफॉल्ट नुसार असतात. सिग्नल म्हणजे एकतर सिग्नल किंवा सिग्नलची यादी. संकेतानुसार सिग्नल (3) अनुसार संख्यात्मक किंवा चिन्हांकित निर्दिष्ट केले जाऊ शकते. "SIG" उपसर्ग सोडला जाऊ शकतो.

कोणतीही आर्ग्यूमेंट्स (किंवा आर्ग्युमेंट -नंबर) न घेता, सापळलेल्या सध्या अस्तित्वात असलेल्या सापळ आदेशाच्या सिग्नल नंबरची परतफेड करते.

जेव्हा कोड मूलतः चालू होणे सुरू होते तेव्हा पिन कोड जे काही कोड Tcl बदलेल त्या ठिकाणी कोडच्या परतीच्या कोडचा वापर केला जातो.

-पूर्णृत ध्वज त्या सापळाच्या घोषणेच्या ऐवजी कमांडने सुरू होताना ज्यावेळी इंटरप्रिटर सक्रिय होता त्यानुसार कमांडचे मूल्यांकन केले जाते.

-नाव फ्लॅप trap च्या कमांडला आत्ता कार्यान्वित होणाऱ्या ट्रॅप कमांडचे सिग्नल नाव परत करेल.

-मॅक्स फ्लॅग ज्याला सेट करता येईल ती सर्वात मोठा सिग्नल नंबर परत करण्यासाठी सापळा आज्ञा कारणीभूत आहे.

उदाहरणार्थ, "ट्रॅप {send_user" Ouch!} "} SIGINT" "Ouch!" मुद्रित करेल. प्रत्येक वेळी वापरकर्ता प्रेस ^ सी.

डीफॉल्टनुसार, SIGINT (जे सहसा ^ C दाबून तयार केले जाऊ शकते) आणि SIGTERM कारण बाहेर पडण्याची अपेक्षा हे पुढील पायरीमुळे होते जेव्हा अपेक्षित सुरू होते तेव्हा डिफॉल्ट द्वारे बनविले जाते.

सापळातून बाहेर पडणे {SIGINT SIGTERM}

डीबगर सुरू करण्यासाठी आपण-डी ध्वज वापरल्यास, परस्पर डीबगर प्रारंभ करण्यासाठी SIGINT पुन्हा परिभाषित केले आहे. हे पुढील सापळामुळे आहे:

सापळा {exp_debug 1} SIGINT

डीबगर ट्रॅप पर्यावरण परिवर्तनीय EXPECT_DEBUG_INIT ला नव्या पिंज आदेशावर सेट करून बदलता येऊ शकतो.

आपण, अर्थातच, आपल्या स्क्रीप्टवर जाळीचे आदेश जोडून या दोघांनाही अधिलिखित करू शकता. विशेषतः, आपल्याकडे आपले स्वतःचे "सापळे बाहेर पडा SIGINT" असल्यास, यामुळे डीबगर सापळा अधिलिखित होईल. हे उपयुक्त आहे जर आपण वापरकर्त्यांना डीबगरकडे वळण्यापासून रोखू नये.

आपण SIGINT वर आपले स्वतःचे सापळे परिभाषित करू इच्छित असल्यास परंतु डीबगर चालत असताना तरीही ते सापडू इच्छित असल्यास, हे वापरा:

तर {! [exp_debug]} {trap mystuff SIGINT}

वैकल्पिकरित्या, आपण डीबगरला इतर सिग्नल वापरुन सापडू शकता.

सापळा आपण SIGALRM साठी क्रिया अधिलिखित करू देणार नाही कारण हे अपेक्षित करण्यासाठी आंतरिकरित्या वापरले जाते डिस्कनेक्ट कमांड SIGALRM SIG_IGN वर सेट करते (दुर्लक्ष करा). आपण जोपर्यंत पुढील अपूर्ण आज्ञे दरम्यान अक्षम करता तोपर्यंत आपण हे पुन्हा सक्षम करू शकता.

अधिक माहितीसाठी संकेत (3) पहा.

प्रतीक्षा करा [आरजीएस]
निरुपयोगी प्रक्रिया होईपर्यंत विलंब (किंवा विद्यमान प्रक्रिया कोणतेही नाव दिले गेले नाही) संपेपर्यंत.

साधारणपणे प्रतीक्षा करा चार पूर्णांकांची सूची. प्रथम पूर्णांक हा प्रक्रियेचा संच आहे जो प्रतीक्षेत होता. दुसरा पूर्णांक म्हणजे संबंधित स्पॉन id आहे. तिसरा पूर्णांक -1 असल्यास ऑपरेटिंग सिस्टम त्रुटी आली, किंवा अन्यथा 0. तिसऱ्या पूर्णांक 0 असल्यास, चौथा पूर्णांक हा अर्जित प्रक्रियेद्वारे मिळणारी स्थिती आहे. तिसऱ्या पूर्णांक -1 असल्यास, चौथा पूर्णांक ऑपरेटिंग सिस्टमद्वारे सेट केलेल्या errno ची व्हॅल्यू आहे. ग्लोबल व्हेरिएबल एरर कोड देखील सेट आहे.

प्रतीक्षापासून रिटर्न मूल्याच्या शेवटी अतिरिक्त घटक दिसू शकतात. एक पर्यायी पाचव्या घटकास माहितीचा वर्ग ओळखतो. सध्या, या घटकासाठी फक्त संभाव्य मूल्य केवळ मुलालाच आहे ज्या प्रकरणात पुढील दोन मूल्ये C- शैली सिग्नल नाव आणि लहान पाठ्य वर्णन आहेत.

-i फ्लॅग नावाच्या spawn_id ( प्रक्रिया आयडी नाही) शी संबंधित वाटचालीची प्रक्रिया घोषित करतो. एका SIGCHLD हँडलरच्या आत, स्पॉन id-1 वापरुन कोणत्याही फवारणी प्रक्रियेची प्रतीक्षा करणे शक्य आहे.

-आवाखी ध्वज यशस्वी प्रतीक्षा च्या संकेत सह ताबडतोब परत येण्याची प्रतीक्षा करते जेव्हा प्रक्रिया पुढे (नंतरच्या) बाहेर पडते, तेव्हा ती स्पष्टपणे वाट पहावी लागेल ती स्वयंचलितपणे अदृश्य होईल.

प्रतीक्षा आदेश देखील वापरला जाऊ शकतो तर्क "-i -1" वापरून फॉरकर्ड प्रक्रियेची प्रतीक्षा करत आहे. निरुपयोगी कार्यपद्धतींसह त्याचा वापर न करता, ही आज्ञा कोणत्याही वेळी कार्यान्वित केली जाऊ शकते. कोणत्या प्रक्रियेवर कापणी होते यावर कोणतेही नियंत्रण नाही. तथापि, प्रक्रिया आयडीसाठी रिटर्न मूल्य तपासले जाऊ शकते.

ग्रंथालय

अपेक्षित स्क्रिप्टसाठी दोन अंगभूत लायब्ररीबद्दल स्वयंचलितपणे माहित असणे आवश्यक आहे. या व्हेरिएबल्स exp_library आणि exp_exec_library या नावातील डिरेक्टरीजद्वारे परिभाषित केले आहेत. दोन्ही उपयोगिता फाइल्स असतात ज्या इतर स्क्रिप्ट द्वारे वापरल्या जाऊ शकतात.

exp_library मध्ये आर्किटेक्चर-स्वतंत्र फाइल समाविष्टीत आहे. exp_exec_library मध्ये आर्किटेक्चर-निर्भर फाइल समाविष्टीत आहे आपल्या प्रणालीवर अवलंबून, दोन्ही संचयीका पूर्णपणे रिक्त असू शकतात. $ Exp_exec_library / cat-buffers फाइलचे अस्तित्व आपल्या बिन / बफर / बफर्सद्वारे पूर्वनिर्धारीतपणे दर्शवते.

प्रीटी-प्रिंटिंग

एक vgrind व्याख्या pretty-printing Expect scripts साठी उपलब्ध आहे. आभास वितरण सह पुरवलेले vgrind व्याख्या योग्यरित्या स्थापित आहे असे गृहीत धरून, आपण ते असे म्हणून वापरू शकता:

vgrind -lexpect फाईल

उदाहरणे

हे बर्याचजणांना सर्व गोष्टी एकत्र ठेवण्याचे स्पष्ट नाही की हे मनुष्य पृष्ठ कसे वर्णन करते. मी अपेक्षा करतो की अपेक्षा वाटपच्या उदाहरण निर्देशिकेत उदाहरणे वाचून पहा. त्यापैकी काही वास्तविक कार्यक्रम आहेत. इतर विशिष्ट तंत्रज्ञानाचे केवळ उदाहरण आहेत, आणि नक्कीच, जोडपे फक्त हॅक हॅक करतात. INSTALL फाईलमध्ये या प्रोग्रामचे झटपट विहंगावलोकन आहे.

अपेक्षित कागदपत्रे (पहाःदेखील पाहा) देखील उपयुक्त आहेत. काही कागदपत्रे अपेक्षेच्या पूर्वीच्या आवृत्त्यांशी संबंधित वाक्यरचना वापरत असताना, त्याबरोबरचे तर्कसंगत अद्याप वैध आहेत आणि या पृष्ठावरील पृष्ठापेक्षा बरेच तपशील मिळतात.

CAVEATS

एक्सप्लेशन्स अपेक्षांच्या कमांड नंबर्ससह टकतात. उदाहरणार्थ, पाठवा पूर्णतया वेगळ्या उद्देशासाठी रुपये निश्चित केले आहे. या कारणास्तव, बहुतेक Exempt आदेश देखील "exp_XXXX" म्हणून उपलब्ध आहेत. "एक्सपे", "इंटर", "स्पॉन", आणि "कालबाह्य" पासून सुरू होणारे आदेश आणि व्हेरिएबल्सना उपनाम नसतात. आपल्याला वातावरणात या सुसंगतपणाची आवश्यकता असल्यास विस्तारित कमांड नावे वापरा.

अपेक्षेने स्कोपिंगच्या ऐवजी उदारमतवादी दृश्य घेते. विशेषतः, एक्सचेंज कार्यक्रमांप्रमाणे विशिष्ट आदेशांद्वारे वाचलेल्या व्हेरिएबल्स प्रथम स्थानिक व्याप्तीमधून मागितल्या जातील आणि वैश्विक स्कोपमध्ये आढळल्यास ते सापडणार नाहीत. उदाहरणार्थ, हे आपण वापरत असलेल्या प्रत्येक पद्धतीमध्ये "जागतिक वेळसमाप्ती" ठेवण्याची आवश्यकता नापसंत करते, जी अपेक्षा वापरते दुसरीकडे, लिहीलेली वर्ण नेहमी स्थानिक व्याप्तीमध्ये असतात (जोपर्यंत "ग्लोबल" कमांड जारी केले जात नाही तोपर्यंत). या प्रक्रियेत स्पॉनची अंमलबजावणी केल्याने सर्वात सामान्य समस्या उद्भवते. प्रक्रियेच्या बाहेर, spawn_id यापुढे अस्तित्वात नाही, त्यामुळे रिक्तपणामुळे रिक्त प्रक्रिया आता उपलब्ध नसेल. अशी प्रक्रिया करण्यासाठी "ग्लोबल स्पॅन_आयडी" जोडा

जर आपण बहुस्तरीय क्षमता सक्षम करू शकत नाही (म्हणजे, तुमची सिस्टीम कोणत्याही निवडक (बीएसडी *. *), मतदान (एसव्हीआर> 2), किंवा काही समतुल्य नाही तर) अपेक्षित फक्त एकावेळी एक प्रक्रिया नियंत्रित करण्यास सक्षम असेल. या प्रकरणात, spawn_id सेट करण्याचा प्रयत्न करू नका, आणि आपण व्युत्पन्न प्रक्रिया चालवत असताना exec द्वारे प्रक्रिया अंमलात आणू नये. शिवाय, आपण एकाच वेळी एकापेक्षा जास्त प्रक्रियांपासून (एकसारख्या वापरकर्त्यासह) अपेक्षा करू शकणार नाही.

स्क्रिप्ट्सवर टर्मिनल पॅरामिटर्सचा मोठा प्रभाव असू शकतो. उदाहरणार्थ, एखादी प्रतिध्वनी पाहण्यासाठी एक स्क्रिप्ट लिहिली असेल तर, प्रतिध्वनी बंद केल्यावर हे गैरसमज होईल. या कारणास्तव, बलाने टर्मिनल पॅरामीटर डीफॉल्टनुसार समजून घ्या. दुर्दैवाने, हे इतर प्रोग्रामसाठी गोष्टींना अप्रिय बनवू शकते. उदाहरण म्हणून, emacs shell "नेहमीच्या" मॅपिंग बदलू इच्छिते: नवीन मार्ग कॅरेज-रिटर्न न्यूलाइनऐवजी न्यूलाइन्सवर मॅप केले जातात आणि प्रतिध्वनी अक्षम केली जाते. यामुळे इनपुट लाइन संपादित करण्यासाठी emacs वापरण्याची मुभा मिळते. दुर्दैवाने, अपेक्षा करणे शक्य नाही.

आपण टर्मिनल पॅरामीटर्सची डीफॉल्ट सेटिंग ओव्हरराइड न करण्याचा प्रयत्न करु शकता, परंतु अशा वातावरणात स्क्रिप्ट लिहिताना आपल्याला खूप काळजी घ्यावी लागेल. Emacs च्या बाबतीत, प्रतिध्वनी आणि एंड-ऑफ-लाइन मॅपिंग सारख्या गोष्टींवर अवलंबून राहणे टाळा.

ज्या आज्ञांनी आर्ग्युमेंट्स स्वीकारली ती एकाच सूचीमध्ये ( अपेक्षित रूपे आणि संवाद साधणे ) स्वीकारली, ती ठरविण्याकरता एक सूची वापरली जाते की सूची प्रत्यक्षात एक तर्क किंवा अनेक आहे स्वानुक्रमिक गोष्टी केवळ तेव्हाच अपयशी होऊ शकतात जेव्हा यादी प्रत्यक्षात एकाच आर्ग्युमेंटचे प्रतिनिधीत्व करते ज्यामध्ये एकाधिक एम्बेडेड \ n आहे जे त्यांच्यामध्ये नसलेले मोकळी जागा आहे. हे पुरेसे अशक्य वाटते, तथापि, एक तर्क म्हणून हाताळण्यासाठी एक वितर्क सक्ती करण्यासाठी "-nobrace" वापरला जाऊ शकतो. हे मशीनद्वारे निर्मीत अपेक्षित कोडसह वापरण्यासारखे असू शकते. त्याचप्रमाणे -ब्रेज एकापेक्षा अधिक नमुन्यांची / क्रियांच्या हाताळणीसाठी एक तर्क देते.

बॅग

हा कार्यक्रम "लिंग" (एकतर "स्मार्ट एक्सीक" किंवा "पाठवा-अंदाज") नावाने प्रलोभनेला प्रेरित करण्यात आला होता, परंतु सुज्ञता (किंवा कदाचित फक्त पुनिटनिजम) अस्तित्वात आली.

काही प्रणालींवर, जेव्हा एक शेल तयार होतो, तेव्हा ती टीटीवर प्रवेश करण्यास सक्षम नसल्याबद्दल तक्रार करते परंतु तरीही चालते. याचा अर्थ आपल्या सिस्टममध्ये नियंत्रक टीटी मिळविण्याची एक यंत्रणा आहे ज्याची अपेक्षा नाही. हे काय आहे ते शोधा आणि मला ही माहिती परत पाठवा

Ultrix 4.1 (कमीतकमी येथे असलेल्या नवीनतम आवृत्त्या) 1000000 च्या वरील कालमर्यादास 0 समतुल्य मानतात.

जर आपण SIGCHLD चे हॅन्डलर परिभाषित केले असेल तर डिजिटल युनिक्स 4.0A (आणि कदाचित इतर आवृत्ती) ptys वाटप करण्यास नकार देतात. अधिक माहितीसाठी मंजूर पृष्ठ पहा.

IRIX 6.0 योग्यरित्या pTY परवानग्या हाताळत नाही जेणेकरून पूर्वी कोणीतरी pty वाटप करण्याचा प्रयत्न करणे अपेक्षित असेल तर ते अयशस्वी ठरते. IRIX 6.1 वर श्रेणीसुधारित करा.

टेलनेट (SunOS 4.1.2 अंतर्गत केवळ सत्यापित) जर TERM सेट नसेल तर हँग होणे. ही क्रोन अंतर्गत आणि Cgi स्क्रिप्टमध्ये एक समस्या आहे, जी TERM परिभाषित करत नाही अशाप्रकारे, आपण हे स्पष्टपणे सेट करणे आवश्यक आहे - कोणत्या प्रकारचे सहसा अप्रासंगिक आहे हे फक्त काहीतरी सेट केले आहे! बहुतेक प्रकरणांसाठी कदाचित खालील संभाव्यता

सेट एन्व्ही (टीईएमएम) vt100

टीप (बीएसडीआई बीएसडी / ओएस 3.1 आय.386 अंतर्गत केवळ सत्यापित) शेल आणि होम सेट नसल्यास हँग होणे. ही क्रोन अंतर्गत आणि Cgi स्क्रिप्ट्समध्ये एक समस्या आहे, जी या पर्यावरण परिवर्तनांची व्याख्या करीत नाही अशाप्रकारे, आपण त्यांना स्पष्टपणे सेट करणे आवश्यक आहे - कोणत्या प्रकारचे सहसा अप्रासंगिक आहेत हे फक्त काहीतरी सेट केले आहे! बहुतेक प्रकरणांसाठी कदाचित खालील संभाव्यता

सेट एन्व्ह (शेल) / बिन / श सेट एन्व्ह (HOME) / usr / local / bin

पीटीझच्या काही कार्यान्वयने अशा पद्धतीने तयार केल्या जातात की कार्नेल 10 ते 15 सेकंदांनंतर (वास्तविक संख्या अंमलबजावणी-अवलंबन) नंतर कोणत्याही न वाचलेल्या आउटची भिरकावतो कारण प्रोसेसने फाइल डिस्क्रिप्टर बंद केले आहे. त्यामुळे अशा कार्यक्रम अपेक्षा

स्पॉन डेट स्लीप 20 अपेक्षित

अयशस्वी होईल. हे टाळण्यासाठी, गैर-परस्परसंवादी कार्यक्रमांना स्पॅनऐवजी अंमलात आणा . अशी परिस्थिती विचारात घ्यायची असताना, सरावाने मला अशी परिस्थिती आली नाही ज्यामध्ये खरोखरच परस्पर संवादाचे अंतिम परिणाम या वर्तनामुळे गमावले जातील.

दुसरीकडे, प्रक्रिया UNICOS ptys फाईल डीक्रिप्टर बंद केल्यावर ताबडतोब कोणत्याही न वाचलेल्या आउटपुट फेकू देतात. मी हे क्रे कडे कळविले आहे आणि ते निराकरण करीत आहेत

कधीकधी प्रॉमप्ट आणि प्रतिसादात विलंब आवश्यक असतो, जसे की जेव्हा एक टीटीआय इंटरफेस UART सेटिंग्ज बदलत असेल किंवा प्रारंभ / स्टॉप बिट्स शोधून बॉड दर बदलत असेल. सर्वसाधारणपणे या सर्व गोष्टींना एक किंवा दोन स्लीप साठी झोपण्याची आवश्यकता असते. हार्डवेअर इनपुट प्राप्त करण्यास तयार होईपर्यंत पुन्हा प्रयत्न करणे ही एक अधिक प्रभावी तंत्र आहे. खालील उदाहरणा दोन्ही धोरणाचा वापर करतात:

"वेग 9600 \ r" पाठवा; झोप 1 अपेक्षित {वेळसमाप्ति {पाठवा "\ r"; exp_continue} $ प्रॉम्प्ट}

trap -code Tcl च्या इव्हेंट रोपमध्ये बसलेल्या कोणत्याही कमांडसह काम करणार नाही, जसे की झोप. समस्या अशी आहे की इव्हेंट रोचमध्ये, Tcl एसीआयसीक इव्हेंट हँडलरच्या रिटर्न कोड काढून टाकते. पिळवणुक कोडमध्ये एक ध्वज सेट करणे हा एक अस्थायी असतो. नंतर आदेश (स्लीप) नंतर लगेच ध्वज तपासा.

Expect_background आज्ञा दुर्लक्षित करते-कालबाह्य वितर्क आणि सामान्यत: कालबाह्यताची कोणतीही संकल्पना नाही.

& # 34; अपेक्षित चिन्हे & # 34;

आशा बाळगण्याबद्दल काही गोष्टी आहेत जे हे सहज नसतील या विभागात काही सूचनांसह यापैकी काही गोष्टी संबोधित करण्याचा प्रयत्न केला जातो.

शेल प्रॉम्प्ट ओळखणे ही एक सामान्य अपेक्षा समस्या आहे. वेगवेगळे लोक आणि वेगवेगळ्या आकाराचे हे वेगवेगळ्या पद्धतीने कस्टमाइज केल्यामुळे, पोर्टलने स्वयंचलितपणे रॅलगिन स्वयंचलित केल्याने प्रॉमप्टची माहिती न घेता कठीण होऊ शकते. उचित परंपरा म्हणजे वापरकर्त्यांनी प्रॉम्प्टचे (विशेषतः, अखेरचे) पर्यावरण परिवर्ती EXPECT_PROMPT मध्ये एक नियमित अभिव्यक्ती ठेवली पाहिजे. खालील कोड वापरला जाऊ शकतो. EXPECT_PROMPT अस्तित्वात नसल्यास, कोडला योग्यरित्या कार्य करण्याची चांगली संधी आहे

सेट प्रॉम्प्ट "(% | # | \\ $) $"; # डीफॉल्ट सूचक पकडू {सेट प्रॉम्प्ट $ env (EXPECT_PROMPT)} अपेक्षित -re $ प्रॉम्प्ट

मी तुम्हाला अपेक्षा करतो की आपण जे काही अपेक्षा बाळगतो त्या समाप्तीचा समावेश आहे. हे संपूर्ण गोष्ट पाहण्याआधी प्रश्न उत्तर देण्याची शक्यता टाळते. याव्यतिरिक्त, आपण त्यांना संपूर्णपणे पाहण्यापूर्वीच प्रश्नांचे उत्तर देण्यास सक्षम असू शकता, जर आपण लवकर उत्तर दिले तर आपले उत्तर प्रश्नाच्या मध्यभागी पुन्हा एकोख्याप्रमाणे दिसू शकते. दुसऱ्या शब्दांत, परिणामी संवाद योग्य असेल परंतु लक्ष वेधून घेईल.

बर्याच प्रॉम्प्टमध्ये शेवटी अंतराळ वर्णांचा समावेश आहे उदाहरणार्थ, एफटीपी मधून प्रॉमप्ट 'f', 't', 'p', '>' आणि आहे. या प्रॉम्प्टला जुळण्यासाठी, आपल्याला या प्रत्येक अक्षरांची खाती करणे आवश्यक आहे. रिक्त समाविष्ट न करणे ही एक सामान्य चूक आहे स्पष्टपणे रिक्त ठेवा

आपण एक्स * च्या नमुन्याचे जर वापरत असाल तर, * एक्सच्या शेवटच्या मिळालेल्या शेवटच्या वस्तूस मिळविलेल्या सर्व आउटपुटशी मिळतील. हे अंतर्ज्ञानी आहे परंतु काहीसे गोंधळात टाकणारे असू शकते कारण "शेवटची गोष्ट प्राप्त झाली" वाक्यांश संगणकाची गती आणि कर्नेल आणि डिव्हाइस ड्रायव्हर द्वारे I / O ची प्रक्रिया करण्यावर अवलंबून बदलू शकतात.

विशेषतः, मानव मोठ्या भागांतून (परमाणु पद्धतीने) आगमन होणारे प्रोग्राम आउटपुट पाहतात तेव्हा प्रत्यक्षात बर्याच प्रोग्राम एकाच वेळी एक ओळी उत्पादन करतात. असे गृहीत धरल्यास, मागील परिच्छेदाच्या नमुना * सध्याच्या ओळीच्या शेवटच्या सामन्याशी जुळणारे असेल तरीसुद्धा तेवढी जास्त दिसते, कारण सामन्याच्या वेळी जे प्राप्त झाले होते ते सर्व आउटपुट होते.

जोपर्यंत आपल्या नमुन्याची विशिष्टरितीने खातं नाही तोपर्यंत आणखी उत्पादन येत आहे याची जाणीव करण्याची अपेक्षा नाही.

जरी रेखा-आधारित बफरिंगवर अवलंबून राहणे अशक्य आहे. कार्यक्रम केवळ क्वचितच बफर करण्याच्या प्रकाराबद्दल आश्वासने देत नाहीत, परंतु प्रणाली अपचन उत्पादन लाइन खंडित करू शकतो जेणेकरून ओळी यादृच्छिक ठिकाणी खंडित होईल. अशा प्रकारे, नमुनों वाचताना आपण प्रॉमप्टचे शेवटचे काही अक्षर व्यक्त करू शकत असाल तर तसे करणे सुज्ञपणाचे आहे.

आपण कार्यक्रमाच्या शेवटच्या आउटपुटमध्ये नमुन्याचे प्रतीक्षेत असाल आणि प्रोग्रॅम त्याऐवजी काहीतरी सोडल्यास, आपण ते कालबाह्य कीवर्डसह शोधण्यात सक्षम होणार नाही. याचे कारण म्हणजे अपेक्षित वेळ कालबाह्य होणार नाही - त्याऐवजी त्याला एक संकेत मिळेल. त्याऐवजी वापरा. आणखी चांगले, दोन्ही वापरा. त्या पद्धतीने कधी हा रेष हलवला गेला तर आपल्याला त्या ओळीमध्ये संपादन करण्याची आवश्यकता नाही.

न्यूलाइन्स सामान्यतः कॅरेज रिटर्नमध्ये रुपांतरित होतात, लाइनफीड क्रम जेव्हा टर्मिनल ड्राईव्हद्वारे आउटपुट होते. अशा प्रकारे, जर आपण एक पॅटर्न इच्छित असल्यास जो स्पष्टपणे दोन ओळी जुळत असेल, असे म्हणू नका, printf ("foo \ nbar"), आपण "foo \ r \ nbar" नमुन्याचा वापर करावा.

अपेक्षित द्वारे वापरकर्त्याकडून वाचन करतेवेळी तत्सम अनुवाद उद्भवते. या प्रकरणात, आपण परत दाबा तेव्हा, तो एक नवीन ओळीत अनुवादित केले जाईल जर अपेक्षीत असेल तर त्या कार्यक्रमाला जे त्याच्या टर्मिनलला कच्च्या मोडमध्ये (टेलनेट सारखा) सेट करेल, तेथे एक समस्या असणार आहे, कारण कार्यक्रमाला खर्या रिटर्नची अपेक्षा आहे. (काही प्रोग्राम्स प्रत्यक्षात क्षमा आहेत जेणेकरुन ते आपोआप न्यूलाइन्सची परतफेड करतील, परंतु बहुतेक असे करणार नाहीत.) दुर्दैवाने, एखादा प्रोग्राम आपल्या टर्मिनलला कच्च्या मोडमध्ये ठेवेल हे शोधण्यासाठी कोणताही मार्ग नाही.

नविन फाइल पुनर्निर्धारितपणे पुनर्स्थित करण्याऐवजी, "stty raw" आदेश वापरण्यासाठी उपाय आहे, जे अनुवाद थांबवेल. टीप, तथापि, याचा अर्थ असा आहे की आपण आता शिजवलेल्या लाइन-संपादन वैशिष्ट्यांना मिळणार नाही

परस्पर संवाद आपल्या टर्मिनलला कच्च्या मोडमध्ये सेट करतो त्यामुळे ही समस्या नंतर येणार नाही.

बहुतेक स्क्रिप्टची अपेक्षा ठेवण्यासाठी पासवर्ड (किंवा इतर खाजगी माहिती) संचयित करणे उपयुक्त असते. संगणकावरील साठवलेले काहीही कोणासही वापरता येण्याजोगे असण्याची शक्यता असल्याने हे शिफारसित नाही. अशा प्रकारे, स्क्रिप्टमधून परस्पररित्या पासवर्डची अपेक्षा करणे त्यांना अक्षरशः एम्बेड करणे अधिक चांगली कल्पना आहे असे असले तरी, कधी कधी अशी एम्बेड करणे ही एकमेव शक्यता असते.

दुर्दैवाने, UNIX फाइल प्रणालीला स्क्रिप्ट्स तयार करण्याचा प्रत्यक्ष मार्ग नाही ज्या एक्जिक्यूट करण्यायोग्य परंतु न वाचण्यायोग्य आहेत. सेटगिड शेल स्क्रिप्ट्सकरिता समर्थन पुरविणाऱ्या प्रणाली अप्रत्यक्षरित्या खालील प्रमाणे असे बनवते:

अपेक्षित स्क्रिप्ट तयार करा (ज्यात गुप्त डेटा समाविष्ट आहे) नेहमीप्रमाणे त्याच्या परवानग्या 750 (-आरडब्ल्यूएक्सआर-एक्स ---) आणि विश्वासार्ह समूहाच्या मालकीची असणे अर्थात, एक गट ज्यास ती वाचण्याची परवानगी आहे. आवश्यक असल्यास, या कारणासाठी एक नवीन गट तयार करा. पुढे, परवानगी म्हणून 2751 (-आरडब्ल्यूएक्सआर-एस - x) एक / bin / sh स्क्रिप्ट तयार करा ज्याच्या पूर्वीसारख्याच समूहाची मालकी आहे.

परिणाम स्क्रिप्ट आहे जो एखाद्याचे कार्यान्वित (आणि वाचून) केले जाऊ शकते. विनंती केल्यास, हे Expect script चालवते.

& # 34; हा सुद्धा पहा & # 34;

टीसीएल (3), libexpect (3)
"एक्सप्लोरिंग एक्सपेक्ट: अ टीसीएल-बेस्ड टूलकिट ऑटोमेटिंग इंटरएक्टिव्ह प्रोग्राम्स" डॉन लिबस्, पीपी 602, आईएसबीएन 1-565 9 2 9 0 0 9, ओ रेली अँड एसोसिएट्स, 1 99 5.
"अपेक्षित: डॉन लिब्स, 1 99 0 च्या यूएससीएक्स कॉन्फरन्स, अॅनाहिम, कॅलिफोर्निया, जून 11-15, 1 99 0 तारखेचे कार्यवाही " डॉन लिबसे यांनी "परस्पर संबंधातील अनियंत्रित फेटाळ लावणे" .
मी डॉन लिब्स यांनी "सिस्टम ऍडमिनिस्ट्रेशन टास्कस ऑटोमेशन" अशी अपेक्षा व्यक्त केली. 1 99 0 च्या यूएसएएनिक्स लाईफ इन्स्टॉलेशन सिस्टम्स एडमिनिस्ट्रेशन कॉन्फरन्स, कोलोराडो स्प्रिंग्स, कोलोराडो, ऑक्टोबर 17-19 1 99 0 रोजीची कार्यवाही.
.मी जॉन ओस्टरहॉउट, "वॉशिंग्टन, डी.सी., वॉशिंग्टन, डीसी, जानेवारी 22-26, 1 99 0 मधील कार्यवाही" जॉन ऍस्टर एम्बेडेबल कमांड लँग्वेज ". डॉन लिब्स, कॉम्प्युटिंग सिस्टम्स द्वारे" इंटरकॅक्टिव्ह प्रोग्राम्सवर नियंत्रण ठेवण्यासाठी लिपी " , व्हॉल. 4, क्रमांक 2, कॅलिफोर्निया विद्यापीठ, प्रेस जर्नल, नोव्हेंबर 1 99 1 .. मी "रेग्रेसन टेस्टिंग अँड कन्फॉर्मन्स टेस्टिंग इंटरेक्टिव्ह प्रोग्राम्स", डॉन लिब्स, प्रोसिडिंग्स ऑफ दी ग्रीष्म 1992 यूएनएनिक्स कॉन्फरेंस, पीपी 135-144, सॅन एंटोनियो, टेक्सस, जून 12-15, 1 99 2. डॅन लिब्स, सॉफ़्टवेअर - सराव आणि अनुभव, जॉन विले अँड संस, वेस्ट ससेक्स, इंग्लंड, व्हॉल. द्वारे "किबित्झ - कनेक्टिंग मल्टीपल इंटरएक्टिव प्रोग्राम्स".

23, क्रमांक 5, मे, 1 999. मी "डब्लूगर फॉर टीसीएल ऍप्लिकेशन्स", डॉन लिब्स यांनी, 1 99 3 टीएसीएल / टीसी कार्यशाळा, बर्कले, सीए, जून 10-11, 1 99 3 ची कार्यवाही.

AUTHOR

डॉन लिबेश, नॅशनल इंस्टिट्यूट ऑफ स्टँडर्डस् अँड टेक्नॉलॉजी

स्वीकार्य

टीसीएलसाठी जॉन ओस्टरहॉउट आणि प्रेरणासाठी स्कॉट पायस्ले यांचे आभार. अपेक्षित स्वयंकाष्टिकरण कोडसाठी रॉब Savoye धन्यवाद.

इतिहासाची फाईल बर्याचदा उत्क्रांतीची अपेक्षा करते . हे मनोरंजक वाचन करते आणि आपल्याला या सॉफ्टवेअरसाठी पुढील माहिती देऊ शकते. बग फिक्सने मला पाठविले आणि इतर मदत दिली त्यामध्ये नमूद केलेल्या लोकांबद्दल धन्यवाद.

अपेक्षित डिझाईन व अंमलबजावणी यूएस सरकारच्या काही भागासाठी देण्यात आली आणि म्हणूनच सार्वजनिक क्षेत्रातील आहे. मात्र लेखक आणि NIST क्रेडिट्सना इच्छित असल्यास हा प्रोग्राम आणि दस्तऐवजीकरण किंवा त्यांचा भाग वापरला जातो.