Linux / Unix විධානය බලාපොරොත්තුව

පිටපතක් අනුව වෙනත් අන්තර් ක්රියාකාරී වැඩසටහන් සමඟ කතා කරන වැඩසටහනකි. තිර පිටපත අනුගමනය කිරීමෙන් වැඩසටහනක සිට අපේක්ෂා කළ හැකි දේ සහ නිවැරදි පිළිතුර විය යුත්තේ කුමක් ද යන්න අපේක්ෂා කරයි. පරිවර්ථනය කරන ලද භාෂාවට සංවාදයක් මෙහෙයවීම සඳහා ශාඛා සහ ඉහළ මට්ටමේ පාලන ව්යුහයන් සපයයි. මීට අමතරව, පරිශීලකයාට අවශ්ය විටදී සෘජුවම පාලනය කිරීමට සහ සෘජු සම්බන්ධතාවට පසුව, පසුකාලීනව තිර රචනය වෙත ආපසු ලබා දෙනු ඇත.

Expectk යනු Expect සහ Tk මිශ්රණයකි. එය අපේක්ෂා හා Tk ගේ කැමැත්ත ලෙස හැසිරේ. Tcl තොරව C හෝ C ++ සෘජුව භාවිතා කළ හැකිය.

"Expect" යන නමෙහි නම වන්නේ uucp, kermit සහ අනෙකුත් මෝඩ පාලන වැඩසටහන් මඟින් ජනප්රිය කරන අනුක්රමය / අනුක්රමය අපේක්ෂා කිරීමයි. කෙසේ වෙතත් Uucp මෙන් නොව, බලාපොරොත්තුව පොදුවේ සාමාන්යකරණය කර ඇති අතර, එය ඕනෑම වැඩසටහනක් හා කාර්යයක් සමඟ පරිශීලක මට්ටමේ විධානයක් ලෙස ක්රියාත්මක විය හැකිය. එකවරම වැඩසටහන් කිහිපයකට කතා කළ හැකිය.

ඔබට කළ හැක්කේ කුමක්ද?

නිදසුනක් ලෙස, අපේක්ෂා කළ හැකි විධානය කළ හැකි දේවල් කිහිපයක් මෙහි දැක්වේ:

ෂෙල් හට මෙම කාර්යයන් ඉටුකිරීමට නොහැකි හේතු රාශියක් ඇත. සියල්ල අපේක්ෂා කළ හැකිය.

සාමාන්යයෙන්, වැඩසටහන සහ පරිශීලකයා අතර අන්තර් ක්රියාකාරීත්වය අවශ්ය ඕනෑම වැඩසටහනක් අපේක්ෂා කරයි. අත්යවශ්ය දෙයක් වන්නේ අන්තර්ක්රියාකාරිත්වයට අනුව ක්රියා කළ හැකි බවයි. පාලක වැඩසටහන නතර කිරීමකින් තොරව පරිශිලකයෙකුට නැවත පාලනය කළ හැකිය. ඒ හා සමානව, පරිශීලකයා ඕනෑම වේලාවක තිර රචනය වෙත පාලනය කළ හැකිය.

භාවිතය

ක්රියාත්මක කිරීමට විධාන ලැයිස්තුවක් සඳහා cmdfile කියවීමට අපේක්ෂා කරයි. #################################### තිර රචනය තිර රචනය කිරීම සහ තිර රචනයෙහි පළමු පේළිය සකස් කිරීම මඟින් සටහන් කිරීම:

#! / usr / local / bin / බලාපොරොත්තු -f

සැබවින්ම, මාර්ගය අපේක්ෂා කළ හැකි ස්ථානයක් නිවැරදිව විස්තර කළ යුතුය. / usr / local / bin යනු උදාහරණයක් පමණි.

-c ධජය තිර පිටපතකින් පෙර ක්රියාත්මක කළ යුතු විධානයකි. මෙම ආඥාව ෂෙල් විසින් කැඩී යාම වැලැක්වීමට උපුටා දැක්විය යුතුය. මෙම විකල්පය බොහෝ විට භාවිතා කළ හැක. බහු විධානයන් මඟින් semicolons මඟින් ඒවා වෙන් කිරීම මඟින් තනි -c මඟින් ක්රියාත්මක කළ හැක. ඒවා දිස්වන පිළිවෙළෙහි විධානයන් ක්රියාත්මක වේ. Expectk භාවිතා කරන විට, මෙම විකල්පය සකසා ඇත්තේ -command.

-d ධජය යම් නිශ්චයනයක් ලබා දෙයි. මෙය ප්රාථමික වශයෙන් අපේක්ෂා කරන අතර අන්තර්ක්රියාකාරිත්වයේ අභ්යන්තර ක්රියාකාරකම් වාර්තා කරයි. මෙම ධජය Expect පිටපත ආරම්භයේ දී "exp_internal 1" ලෙසම සමාන වේ, Expect අනුවාදය මුද්රණය වේ.

-D ධජය අන්තර්ක්රියාකාරී වින්යාසකාරකය මඟින් සක්රීය කරයි. පූර්ණ සංඛ්යාවක් අනුගමනය කළ යුතුය. අගයන් නිශ්ශබ්දව හෝ අගයක් හෝ පීඩනයකට ලක්වීමක් හෝ තාවකාලික කඩඉමකට හෝ පහරක් හෝ වෙනත් විභේදන විධාන පුවරුවක් තුල දිස්වනු ඇත. Expectk භාවිතා කරන විට, මෙම විකල්පය ලෙස සඳහන් කර ඇත - Debug.

-f ධජය විධාන කියවීම සඳහා ගොනුවක් භාවිතා කරයි. කොඩිය භාවිතා කිරීමෙන් පමණක් ප්රයෝජනවත් වන ලෙස ධජය අනවශ්යය; අංකනය, අනෙකුත් විචල්යයන් විධාන රේඛාවට සැපයිය හැක. Expectk භාවිතා කරන විට, මෙම විකල්පය -file ලෙස සඳහන් කර ඇත.

පෙරනිමියෙන්, විධාන ගොනුව මතකයේ කියවා සම්පූර්ණයෙන්ම ක්රියාත්මක කරන ලදි. වරකට එක පේළියක් කියවීමට වරින් වර සුදුසුය. අත්තනෝමතික ගොනු මෙම ආකාරයෙන් මෙහෙයවනු පිණිස, -b ධජය භාවිතා කරන්න. Expectk භාවිතා කරන විට, මෙම විකල්පය -buffer ලෙස දැක්වේ.

"-" ගොනු නාමලේඛනය ලෙස සපයන ලද නම්, සම්මත ආදානය කියවනු ලැබේ. "-" ලෙස නම් කරන ගොනුවක කියවීමට "./-" භාවිතා කරන්න.

-i ධජය ගොනු මඟින් ඒවා කියවීම වෙනුවට විධාන සඳහා විමසනු ඇත. පිටවීම විධානය හෝ EOF මත ප්රොශ කිරීම අවසන් වේ. -i ධජය විධාන ගොනුව හෝ -c භාවිතා නොකෙරේ නම් උපකල්පනය කරනු ලැබේ. Expectk භාවිතා කරන විට, මෙම විකල්පය සක්රීය ලෙස අර්ථ දක්වා ඇත.

- විකල්පයන් අවසන් කිරීම සීමා කිරීම සඳහා භාවිතා කල හැක. ඔබ අපේක්ෂා අර්ථකථනය නොකෙරේ, ඔබේ විධානාවලි විකල්ප විකල්පය පරාමිතියක් ලබා දීමට අවශ්ය නම් මෙය ප්රයෝජනවත් වේ. මෙය ප්රයෝජනවත් ලෙස තබා ගත හැකිය #! ඕනෑම අක්ෂි භාෂාවක් අර්ථකථනය කිරීම අපේක්ෂා කිරීමෙන් වළකින්න. නිදසුනක් ලෙස, පහත දැක්වෙන විචල්යයේ විචල්යය argv තුල මූලාරම්භක තර්ක ඉවත් වේ.

#! / usr / local / bin / අපේක්ෂා කරන්න -

සුපුරුදු getopt (3) සහ අනුමත (2) සම්මුති # රේඛාවයි.

නෝට්ටුව භාවිතා කරනුයේ නම් $ exp_library / expect.rc ස්වයංක්රීයව මූලාශ්රය සපයනු ලැබේ. (Expectk භාවිතා කරන විටදී, මෙම විකල්පය NORC ලෙස සඳහන් කර ඇත.) වහාම මෙම ගොනුව ~ / .expect.rc ස්වයංක්රීයව මූලාශ්රය සපයනු ලැබේ, -n ධජය භාවිතා නොකරන්නේ නම්. පාරිසරික විචල්ය DOTDIR අර්ථ දක්වනු ලැබේ නම් එය එය බහලුමක් ලෙස සලකනු ලැබේ, සහ .expect.rc එහි සිට කියවනු ලැබේ. Expectk භාවිතා කරන විට, මෙම විකල්පය -norc ලෙස නියම කර ඇත. මෙම මූලාශ්රය සිදු වන්නේ, -c කොඩි භාවිතා කිරීමෙන් පසුව පමණි.

-v හේතු එහි පිටපත් අංකය මුද්රණය කිරීමට සහ පිටවීමෙන් අපේක්ෂා කරන්න. දිගු ධජ නාම භාවිතා කරන Expectk හි අදාල ධජය වේ.

විකල්ප තර්ක ලැයිස්තුගත කර ඇති අතර විචල්යය තුළ ආර්වර් සහ ආර්එස්එස් එකෙහි ගබඩා කර ඇත. argv ආර්ගයේ දිගට ආරම්භ කර ඇත.

Argv0 යනු ස්ක්රිප්ට් එකක් භාවිතා නොකළහොත් ස්ක්රිප්ට් හෝ ද්විමය නාමයක් ලෙස අර්ථ දැක්වේ. නිදසුනක් වශයෙන්, තිරපිටපතෙහි නම සහ පළමු තර්ක තුනේ පහත පිටපත් මුද්රණය කරයි:

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

විධාන

මෙවලම් කමාන්ඩ් භාෂාව භාවිතා කරයි. Tcl control flow (if, break,), ප්රකාශනය ඇගයීම සහ ප්රතිචක්රීකරණය සහ ක්රියා පටිපාටිය වැනි අනෙකුත් ලක්ෂණ කිහිපයක් සපයයි. මෙහි භාවිතා කළ විධානයන්, නමුත් අර්ථ දක්වා නොමැති (සකසා, if exec) Tcl විධානයන් වේ. අතිරේක විධානයන් සඳහා සහාය දක්වයි. අනෙකක් නිශ්චිතව දක්වා නොමැති නම්, විධානයන් හිස් අකුරු නැවත ලබා දෙයි.

විධානයන් ඉක්මණින් පිහිටුවා ගත හැකි පරිදි අකාරාදී පිළිවෙලින් ලැයිස්තු ගත කර ඇත. කෙසේ වෙතත්, නව පරිශිලකයන්ට එම ඇණවුම තුළ යැවීම, යැවීම, අපේක්ෂා කිරීම සහ අන්තර් ක්රියා කිරීම වැනි විස්තර කියවීම පහසු කරවනු ඇත.

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

වත්මන් ක්රියාවලිය වෙත සම්බන්ධතාවය වසා දමයි. බොහෝ අන්තර්ක්රියාකාරි වැඩසටහන් මගින් ඔවුන්ගේ ඊඩ්එෆ්එෆ් ඔවුන්ගේ ස්ථානයේ සහ පිටවීමේදී හඳුනාගත හැක. එබැවින් එම ක්රියාවලිය මරා දැමීම සඳහා ප්රමාණවත් තරම් ප්රමාණවත්ය. -i ධජය නම් කරන ලද spawn_id වලට අදාල ක්රියාවලිය වසා දමයි.

වත්මන් ක්රියාවලිය අවහිර වන අතර, නිසැකව ම එය වසා දැමීමට අපේක්ෂා කරන අතර සහ අන්තර් ක්රියාකාරීත්වය අනාවරණය වනු ඇත, නමුත් ඔබ ක්රියාවලිය මරා දැමීමෙන්, කියනුයේ, "kill $ kill" කරන්න, ඔබ නිශ්චිතවම සමීප ඇමතුමක් ලබා දිය යුතුය .

-එක්ස්කෙක් ධජය ඕනෑම නව උත්පාදක ක්රියාවලීන්හිදී උද්වේගකර හැඳුනුම්පත වසා දමා තිබේද නැතහොත් ක්රියාවලිය වැඩිදියුණු කළ හොත්. උගුලක් අරින්න යන්න විවෘත කිරීම සඳහා, 0. අගය භාවිතා කරන්න. ශුන්ය නොවන සංඛ්යා අගයක් ඕනෑම නව ක්රියාවලීන් තුළ ඇති කර ඇත.

-එළේ ධජය උල්පත් හැඳුනුම්කරු සමඟ සම්බන්ධ වූ වහලෙක් වසා දමයි. සම්බන්ධතාවය වසා ඇති විට, එය විවෘතව පවතී නම්, වහලෙකු ස්වයංක්රියව වසා ඇත.

සම්බන්ධය වක්රව හෝ නිශ්චිතව වසා තිබේද යන්න නොතකා, අනුරූපී කර්නල් ක්රියාවලි තීරුබදු ඉවත් කිරීම සඳහා රැඳී සිටින්න. සමීප විධානය මඟින් ක්රියාවලිය සම්බන්ධතා වසා දැමීම හේතුකොටගෙන එය පිටවීමට හේතු වන බවට කිසිදු සහතිකයක් නොලැබේ.

debug [[-now] 0 | 1]

Tcl වින්යාසය පාලනය කිරීම මඟින් ප්රකාශයන් හරහා පියවර තැබීමට සහ කඩිනම් ස්ථාන පිහිටුවීමට ඉඩ සලසයි.

වින්යාසයන් නොමැතිව, වින්යාසය ක්රියාත්මක නොවන විට 1 ආපසු ලබා දෙනු ලැබේ, එසේ නොමැතිනම් 0 නැවත ලබා දෙනු ලැබේ.

1 තර්කයක් සමඟ, වින්යාස ආරම්භ වේ. 0 තර්කය සමඟ, වින්යාසය නතර කර ඇත. 1 පරාමිතිය -now ධජයට පෙර නම්, වින්යාසය වහාම ආරම්භ වේ. එසේ නොමැති නම්, වින්යාසය ඊළඟ Tcl ප්රකාශයෙන් ආරම්භ වේ.

දෝශනීය විධානයක උගුල් වෙනස් නොවේ. -D ධජය සමඟ අපේක්ෂාව ඇරඹීමට මෙය සසඳා.

විසන්ධි කිරීමේ ආඥාව පර්යන්තයෙන් බෙලහීන ක්රියාවලිය විසන්ධි කරයි. එය පසුබිම තුළ ක්රියාත්මක වේ. මෙම ක්රියාවලියට තමන්ගේම ක්රියාවලි කාණ්ඩයක් ලබා දී ඇත. සම්මත I / O පෙරගෙවුම් වෙත / dev / null වෙත යොමු කෙරේ .

පහත පසු කොටසට පසුබිමේ අක්ෂර වින්යාසය දිගටම කරගෙන යාම සඳහා විසන්ධි කිරීම භාවිතා කරයි.

{{fork]! = 0} exit විසන්ධි කරන්න. . .

පහත කේත රචනය මුරපදයක් කියවන අතර එය ක්රියාත්මක වන සෑම විටම මුරපදයක් ඉල්ලා සිටින සෑම පැයකම වැඩසටහනක් ක්රියාත්මක කරයි. මෙම කේත රචනය මුරපදය ලබා දෙන්නේ ඔබට එය එක් වරක් පමණක් ටයිප් කළ යුතුය.

මුරපදය: "send_user -re" (. *) \ n "{{1}} {if {{fork]! = 0} {sleep 3600; continue} විසන්ධි වන්න Priv_prog රහස් පදය අපේක්ෂා කරන්න:" $ expect_out 1, string) \ r ". . . පිටවීම }

ෂෙල් අස්යර්නක ක්රියාවලි විශේෂාංගය විසන්ධි කිරීම සඳහා වන වාසිය (&) යනු විසන්ධි වීමට පෙර ටර්මිනල් පරාමිතීන් සුරැකිය හැකි වන අතර ඉන්පසු ඒවා පසුව නව Ptys වෙත යොමු කරනු ලැබේ. & With, ටර්මිනල් පරාමිතීන් කියවීමට අවස්ථාවක් නොමැති අතර, ටර්මිනලය දැනටමත් විසන්ධි කර ඇති විට, ටර්මිනලය දැනටමත් විසන්ධි කර ඇත.

පිටවීම [-opts] [තත්වය]

පිටවීමට අපේක්ෂිත හෝ වෙනත් ආකාරයකින් සූදානම් කිරීමට අපේක්ෂා කරයි.

-එකෙක්ට් ධජය ඊලග තර්කය ඉවත දමන්නෙකු ලෙස භාවිතා කළ හැක. තර්කයක් නොමැතිව, වත්මන් පිටවූ ක්රියාකරු ආපසු ලබා දෙනු ලැබේ.

-exexit කොඩිය මඟින් මෙහෙයුම් පද්ධතියට ආපසු යාම පාලනය කිරීම නතර කිරීමට සූදානම් වීමට අපේක්ෂා කරයි. පරිශීලක-අර්ථදක්වා ඇති පිටවන ක්රියාකරු ක්රියාත්මක වන අතර Expect's own අභ්යන්තර ක්රියාකරුවන්ද ක්රියාත්මක වේ. තව දුරටත් බලාපොරොත්තු වන විධානයන් ක්රියාත්මක කළ යුතුය. අනෙකුත් Tcl දිගු සමඟ ඔබ අපේක්ෂා කරන විට මෙය ප්රයෝජනවත් වේ. වර්තමාන භාෂණ පරිවර්තකය (සහ Tk පරිසරයේ නම් ප්රධාන කවුළුව) අනෙකුත් Tcl දිගු පිරිසිදු කළ හැකි වනු ඇත. Expect Exit නැවත නැවත කැඳවනු ලැබුවහොත් (කෙසේ වෙතත් මෙය සිදු විය හැක), ක්රියාකරවන්නන් නැවත නැවත ආරම්භ කර නොමැත.

පිටවීමෙන් පසු, මතුවූ ක්රියාවලියේ සියලු සම්බන්ධකම් වසා ඇත. වසා දැමූ ක්රියාවලීන් විසින් වසා දැමීම EOF ලෙස හඳුනා ගැනේ. පිටවීමේ ක්රියාවලිය සාමාන්ය _exit (2) ක්රියා පටිපාටිය ඉක්මවා වෙනත් ක්රියාවන් සිදු නොවේ. මේ අනුව, EOF සඳහා නොපැමිණෙන ඇලෙන සුළු ක්රියාවලිය දිගටම පවත්වා ගෙන යා හැක. (නිදසුනක් ලෙස, උච්ච ක්රියාවලියක් යවනු ලබන කුමන සංඥා යනු කුමක්ද යන්න තීරණය කිරීම සඳහා විවිධ තත්වයන් වැදගත් වේ, නමුත් ඒවා පද්ධති-යැපෙන අතර, සාමාන්යයෙන් පිටවීම යටතේ ලේඛනගත කර ඇත.) අඛණ්ඩව ධාවනය වන ආරුක්කු කරන ක්රියාවලිය ඉන්ටෙන් විසින් උරුම කර දෙනු ලැබේ.

තත්වය (නැතහොත් 0 නොකෙරේ නම්) බලාපොරොත්තු වූ පිටවීමේ තත්වය ලෙස ආපසු ලබා දෙනු ලැබේ. පිටපත අවසන් වීමෙන් නම් පිටවීම implicitly executed.

exp_continue [-continue_timer]
විධානය exp_continue සාමාන්යයෙන් එය ආපසු යෑමට වඩා වැඩි වශයෙන් ක්රියාත්මක කිරීමට බලාපොරොත්තු වන බව අපේක්ෂා කරයි. පෙරනිමියෙන් exp_continue කල් ඉකුත්වීමේ වේලාව යලි සකසයි . -continue_timer ධජය යලි අරඹන්නේ නැත . (වැඩි විස්තර සඳහා අපේක්ෂා බලන්න.)

exp_internal [-f ගොනුවේ] අගය
අගය ශුන්ය නොවේ නම්, stderr අපේක්ෂා කිරීමට අභ්යන්තර විචල්ය තොරතුරු අභ්යන්තර යැවීමට තවත් විධානයන් කරයි. මෙම නිමැවුම් අගය අගයක් ලෙස අක්රිය වේ. රෝග විනිශ්චය තොරතුරු සෑම ලැබුණු චරිතයක් ඇතුළත් වේ.

වෛකල්පිත ගොනුව සපයන ලද නම්, සාමාන්යයෙන් හා දෝශාභියෝගයේ ප්රතිදානය එම ගොනුව වෙත ලියා ඇත (වටිනාකමේ වටිනාකම නොසලකා). පෙර හඳුනා ගැනෙන ප්රතිදාන ගොනුව වසා ඇත.

තොරතුරු - ධජය exp_internal හේතු කොට ගෙන මෑතම නොවන තොරතුරු තර්ක පිළිබඳ විස්තරයක් නැවත ලබා දෙයි.

exp_open [args] [-i spawn_id]
මුල් spawn id එකට අනුරූප වන Tcl ගොනුව හඳුනාගැනීමේ ප්රතිලාභය ලබා දෙයි. ගොනුවේ හඳුනාගැනීමේ අංකය Tcl විවෘත කේතය මඟින් එය විවෘත කළ හැක. (උකස් හැඳුනුම් අංකය තවදුරටත් භාවිතා නොකළ යුතුය) බලා සිටිය යුතු නොවේ.

විධාන විධාන හරහා පිවිසීම සඳහා -leaveopen ධජය මඟින් උච්ච වින්යාසය විවෘත වේ. ඉපදීම සිදු කළ යුතු ය.

exp_pid [-i spawn_id]
වර්තමාන උල්ලංඝනය වන ක්රියාවලියකට අනුරූප වන ක්රියාවලියකි. -i ධජය භාවිතා කරනු ලබන්නේ නම්, ආපසු ලබා දුන් pid අනුරුව ලබා දෙයි.

විහිළුවකි
යැවීම සඳහා අන්වර්ථයක් ඇත.

exp_send_error
එය send_error සඳහා අන්වර්ථයක් වේ.

exp_send_log
send_log සඳහා අන්වර්ථයක් වේ.

exp_send_tty
send_tty සඳහා අන්වර්ථයක් වේ.

exp_send_user
send_user සඳහා අන්වර්ථයක් වේ.

exp_version [[-exit] අනුවාදය]
තිර රචනය Expect හි වර්තමාන අනුවාදය සමඟ අනුකූල වන බවට වගබලා ගැනීම සඳහා ප්රයෝජනවත් වේ.

කිසිදු තර්කයක් නොමැතිව, Expect හි වර්තමාන අනුවාදය නැවත ලබා දෙනු ලැබේ. මෙම අනුවාදය ඔබේ කේත රචනයෙහි කේතීකරණය කළ හැක. මෑත සංස්කරණවල විශේෂාංග ඔබ භාවිතා නොකරන බව ඔබ සැබවින්ම දන්නේ නම්, ඔබට පෙර අනුවාදයක් නියම කළ හැකිය.

විෂ්කම්භය තිත් මඟින් වෙන්වූ සංඛ්යා තුනකින් සමන්විත වේ. මුලින්ම ප්රධාන අංකය. වෙනත් ප්රධාන අංකයකින් අපේක්ෂා අනුවාද සඳහා ලියන ලද ස්ක්රිප්ට් එකක් නිසැකවම වැඩ කරන්නේ නැත. ප්රධාන අංකයන් ගැලපෙන්නේ නැතිව exp_version මඟින් දෝශයක් ලැබෙනු ඇත.

දෙවන සුළු අංකය. දැනට පවතින අනුවාදයට වඩා වැඩි කුඩා අංකයක් සහිත අනුවාදයක් සඳහා ලියන ලද ස්ක්රිප්ට් සමහර නව විශේෂාංග මත රඳා පවතින අතර එය ක්රියාත්මක විය නොහැක. exp_version ප්රධාන සංඛ්යාවන් ගැලපෙන්නේ නම් දෝශයක් නැවත ලබා දෙයි, නමුත් තිරයේ සුළු අංකය ක්රියාත්මක වන Expect එකට වඩා වැඩි වේ.

තෙවන යනු අනුවාදය සැසඳීමේදී කොටසක් නොපවතින සංඛ්යාවකි. කෙසේ වෙතත්, අපේක්ෂිත මෘදුකාංග බෙදා හැරීම කිසිඳු ආකාරයකින් වෙනස් වන විට, එය අතිරේක ලේඛන හෝ ප්රශස්තිකරණය මඟින් සිදු කරනු ලැබේ. එය එක් එක් නව සුළු අනුවාදය මත 0 නැවත පිහිටුවනු ලැබේ.

-exit කොඩිය සමඟ, Expect පිටපතක් දෝෂයක් මුද්රණය කර තිබේ නම් පිටපත ඉවත්ව නොයන්නේ නම් පිටවෙයි.

[[-opts] pat1 body1] ... [-opts] patin [බොයින්]
කාලාන්තරයක් ගතවන ක්රියාවලියකට අනුකූල වන අතර, නිශ්චිත කාල සීමාව ඉක්මවා ඇත, නැතහොත් අවසන් ගොනුව දැක ගත හැකිය. අවසාන ශරීරය හිස් නම්, එය හිස් විය හැක.

වඩාත්ම මෑත අපේක්ෂා_පථ ආඥාව වෙතින් මෝස්තරයන් වෙනත් රටාවන්ට පූර්වයෙන් භාවිතා කරනු ලැබේ. වඩාත්ම මෑත අපේක්ෂිත_ විධානයන්ගෙන් වූ මෝස්තරයන් වෙනත් කිසිදු රටාවක් අනුගමනය නොකරයි.

සම්පූර්ණ අපේක්ෂිත ප්රකාශයට පරාමිතීන් එක් පේළියකට වඩා වැඩි ප්රමාණයක් අවශ්ය නම්, එක් එක් රේඛාව backslash සමඟින් වැලැක්වීම සඳහා සියලු තර්ක එක් කළ හැකි අතර එය "එක්කරනු" ඇත. මෙම එක් අවස්ථාවක දී, සාමාන්ය ටීක් ආදේශක වරහන් නොකෙරේ.

මෝස්තරය eof යතුරු මූලද්රව්යය නම් , අදාල සිරස් අවසානයේ ගොනු මත ක්රියාත්මක වේ. යම් රටාවකට ප්රධානතම පදය කල් ඉකුත්වීම නම් , කල්ඉකුත් වූ විට අදාල සිරුර ක්රියාත්මක වේ. කිසිදු කල්ඉකුත්වී පද යතුරක් භාවිතා නොකෙරේ නම්, කල්ඉකුත්වීමේදී නිශ්චිතව නිෂ්ක්රීය ක්රියාවක් ක්රියාත්මක වේ. ප්රකෘති කල් ඉකුත්වන කාලය තත්පර 10 ක් වන අතර, උදාහරණ වශයෙන් 30 ක් දක්වා, "කාල සීමාව සකසන්න 30" විධානය මඟින් සකසනු ලැබේ. අනන්ත කාල සීමාව -1 අගය මගින් නියම කරනු ලැබේ. රටාවක් පෙරනිමි අගයක් නම්, අදාල කාලසීමාව හෝ කල්ඉකුත්වීම මත අනුරූප ශරීරය ක්රියාත්මක වේ.

යම් රටාවකට ගැලපෙන නම්, අදාල සිරුර ක්රියාත්මක වේ. සිරුරේ ප්රතිඵලය (හෝ රටාවට ගැලපෙන නම් හිස් කොලයක්) අපේක්ෂා නොකළ යුතුය. බහු රටා අනුපිළිවෙලට ගැලපෙන විට, මුලින්ම පෙනී සිටින තැනැත්තා ශරීරයක් තෝරා ගැනීමට භාවිතා කරයි.

නව නිමැවුම් පැමිණෙන සෑම අවස්ථාවකදීම, එය ලැයිස්තුගත කර ඇති එක් එක් රටාවකට සංසන්දනය කරයි. මෙලෙස, ඔබ විමසුමක් වැනි පෙනුම සහතික කර ඇති අන්තිම රටාව සෑදීම මගින් ඔබට තරඟයක් නොමැති වීම සඳහා පරීක්ෂා කළ හැකිය. කිසිදු විමසුමක් නොමැති අවස්ථාවලදී, ඔබ කල් ඉකුත්වීම භාවිතා කළ යුතුය (ඔබ අතින් සිදු වූවකි නම්, ඔබ වැනි).

මෝස්තරයන් තුනක් මාර්ගගත කර ඇත. ප්රකෘතියක් ලෙස, Tcl's string match විධානය සමඟ ඇති රටාවන් ලෙස විශේෂිත වේ. (එබඳු රටා සමාන වන්නේ C-shell විධිමත් ප්රකාශයන් සාමාන්යයෙන් හැඳින්වෙන්නේ "glob" රටාවන් ලෙසයි). කොඩියේ සැරිසැරීම සඳහා අනුකූල වන ආකාරයේ සංකේත ආරක්ෂා කිරීම සඳහා -gl ධජය යොදාගත හැකිය. "-" ආරම්භ වන ඕනෑම රටාවක් මෙම ආකාරයෙන් ආරක්ෂා කළ යුතුය. (අනාගතයේ විකල්පයන් සඳහා වෙන්කර ඇති සියලුම "-" නූල්).

උදාහරණයක් ලෙස, පහත දැක්වෙන කොටස සාර්ථකව පිවිසීමට සොයයි. ( අවලංගු කිරීම යනු තිර රචනයෙහි වෙනත් තැනක අර්ථ දක්වා ඇති ක්රියා පටිපාටිය ලෙසට අනුමාන කරනු ලැබේ).

{busy {කාර්ය බහුලයි; exp_continue} අසාර්ථක වූ "අවලංගු මුරපදය" කල් ඉකුත්වීම අවලංගු කර තැබීම සම්බන්ධිතව}

සෙවුම් සඳහා අවශ්ය වන්නේ සිව්වන රටාව මතය. එය අවකාශයක් අඩංගු බැවින් එය ක්රියා වලින් රටාව වෙන් කර තබනු ඇත. ක්රියාමාර්ගය සමග (3 වන සහ 4 වැනි වැනි) ආකෘති සමග ඇති රටාවන් නැවත ක්රියාවලිය ලැයිස්තුගත කිරීම අවශ්ය වේ. මෙමඟින් regexp-style රටාවන් භාවිතා කිරීමෙන් වළකින්න. (පහත බලන්න). ග්ලැඩියේ ස්ලයිඩ් මෝස්තර සැකසීම පිළිබඳ වැඩි විස්තර Tcl අත්පොතෙහි සොයාගත හැකිය.

Regexp-style රටාවන් Tcl's regexp විසින් නිශ්චය කර ඇති රීතිය අනුගමනය කරයි. ධජ- රෙජිස්ටර් සමඟ ආකෘති සැකසෙනු ලැබේ. පෙර උදාහරණයක් ලෙස regexp භාවිතා කිරීමෙන් නැවත ලිවිය හැකිය:

{busy {කාර්ය බහුලයි; exp_continue} -re "අසාර්ථකයි | අවලංගු මුරපදය" කල් ඉකුත්වීම අවලංගුයි සම්බන්ධිතව}

රටා දෙවර්ගයම "නොබැඳි" ඇත. මෙහි අර්ථය වන්නේ රටාවන්ට සම්පූර්ණ ස්තරයට ගැලපෙන ලෙස නොව, ඕනෑම තැනක තරඟය සඳහා තරගය ඕනෑම ස්ථානයක ආරම්භ කිරීම හා අවසන් කිරීම කළ හැක. String එකක් ආරම්භ කිරීමට සහ ^ අවසානයට ගැලපෙන ලෙස $ භාවිතා කරන්න. කෙටිමක් අවසානයේ රැඳී සිටීමට නොහැකි නම්, ඔබේ ප්රතිචාරයන් මධ්යයේ අග්රයේ මධ්යයේ අවසානය වී ඇති බව සලකන්න. නිසි ප්රතිඵලය නිපදවමින් සිටියද, ප්රතිදානය නරක අතට හැරවිය හැකිය. මෙලෙස, ඔබ විසින් කෙටිමක් අවසානයේ අක්ෂර නිවැරදිව විස්තර කළ හැකි නම් $ භාවිතා කරනු ලැබේ.

බොහෝ සංස්කාරකවරුන් තුළ, ↑ සහ $ අනුපිළිවෙලෙහි පිළිවෙළින් ආරම්භයේ සහ අවසානයේ අනුපිළිවෙල සැලකිල්ලට ගන්න. කෙසේවෙතත්, අපේක්ෂිත රේඛා දිශාව නොලබන නිසා, මෙම අක්ෂර, අපේක්ෂිත ගැලපෙන බෆරයෙහි වර්තමානයේ සහ අවසානයේ දත්ත (පේළි වලට අනුකූලව) ගැලපෙයි. (එසේම පහත සඳහන් සටහන "පද්ධති විෂ්කම්භය" බලන්න).

-ex කොඩිය රටාව "නිශ්චිත" ලෙසට අනුකූල වේ. * * ටීඑන්ඒ ආදිය අර්ථ නිරූපණය නොකෙරේ (සාමාන්යයෙන් Tcl සමීකරණ තවමත් නිරීක්ෂණය කළ යුතුය). නිශ්චිත රටා සැමවිටම නොතිබිය යුතුය.

-nocase ධජය ඒවායේ අඩු අකුරුවල අකුරු ලෙස සැසඳීම සඳහා උපරිම කැපිටල් අකුරු හේතු වේ. රටාව බලපාන්නේ නැත.

කියවීමේ ප්රතිඵලය 2000 බයිට්ස් වලට වඩා පැරණි බයිටවලට "අමතක" විය හැකිය. මෙම ක්රියාමාර්ගය සමඟ match_max වෙනස් කළ හැක. (අතිරික්ත විශාල අගයන් අනුක්රමයට අනුරූපව හැකිලිය හැක .) ප්පෙට්ලිස්ට් පූර්ණ_බෆර් නම්, match_max බයිට්ස් ලැබී ඇති අතර අනුරූප වෙනත් ශරීරයට සමාන නොවේ නම් අදාල සිරුර ක්රියාත්මක වේ. Full_buffer යතුරු භාවිතා කර තිබේද නැතත්, අමතක වූ අක්ෂර expect_out (buffer) ලියා ඇත.

ප්ලස්ට්ලයිට් යතුරු නාමය null වේ නම් , සහ nulls අවසර දෙනු ලැබේ ( remove_nulls විධානය මඟින්), අදාල ASCII 0 එකට ගැලපෙන නම් අදාල සිරුර ක්රියාත්මක වේ. Glob හෝ regexp රටා මගින් 0 බයිට්ස් සමඟ ගැලපීමට නොහැක.

රටාවකට ගැලපෙන පරිදි (හෝ eof හෝ full_buffer) ඕනෑම ගැලපෙන සහ කලින් අසමසම ප්රතිදානය සුරක්ෂිත කර ඇති expect_out (buffer) තුල සුරකයි . 9 ක් දක්වා regexp උපපරිං තරඟ ගැලපීම් අපේක්ෂා_out (1, string) තුල expect_out (9, string) හරහා සුරකින ලදි . මෙම සංකේත ධජය රටාවකට පෙර භාවිතා කරනු ලබන්නේ නම්, ප්රස්ථාරය expect_out (X, ආරම්භය) සහ expect_out (X, අවසන්) තුළ X අගයන් තුළ ආරම්භක සහ අවසාන දර්ශකයන් ( lrange සඳහා සුදුසු ආකාරයෙන් ) ගබඩා කරනු ලැබේ. X යනු ඉලක්කම්, බෆරයේ උප-රේඛා ස්ථානයට අනුරූප වේ. 0 යනු සමස්ත රටාවට ගැලපෙන නූල් සහ ග්ලොග් රටා සඳහා මෙන්ම සැකසුම් රටාවන් සඳහාද ජනනය වේ. උදාහරණයක් ලෙස, ක්රියාවලිය "abcdefgh \ n" හි නිමැවුම් නිපදවා ඇත්නම්, ප්රතිඵල:

"cd"

පහත දැක්වෙන ප්රකාශයන් ක්රියාත්මක වූවා සේම:

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

සහ "efgh \ n" ප්රතිදාන බෆරය තුල ඉතිරි වේ. ක්රියාවලියක් "abbbcabkkkka \ n" ප්රතිඵලය නිපදවූයේ නම්:

බලාපොරොත්තු -indices -re "b (b *). * (k +)"

පහත දැක්වෙන ප්රකාශයන් ක්රියාත්මක වූවා සේම:

set expect_out (0, ආරම්භය) 1 set expect_out (0, end) 10 set expect_out (0, string) bbbcabkkkk set expect_out (1, ආරම්භය) 2 set expect_out (1, end) 3 set expect_out (1, string) bb set expect_out (2, ආරම්භය) 10 set expect_out (2, end) 10 set expect_out (2, string) k set expect_out (buffer) abbbcabkkkk

සහ "a \ n" ප්රතිදාන බෆරය තුල ඉතිරි වේ. "*" (And -re ". *" ආකෘතිය) ක්රියාවලියෙන් තවත් ප්රතිදානය කියවීමකින් තොරව නිමැවුම් බෆරයක් ස්රාවය කරයි.

සාමාන්යයෙන් Expect ගේ අභ්යන්තර බෆරයට ගැලපෙන ප්රතිදානය ඉවතට හරවා ඇත. මෙය නොම්මර ධජය සමඟ රටාව සැකසීම මගින් වළක්වා ගත හැක. මෙම ධජය අත්හදා බැලීම සඳහා විශේෂයෙන් ප්රයෝජනවත් වේ (සහ අත්හදා බැලීමේ පහසුව සඳහා "-not" යන්නට ද හැක).

ගැලපුම් ප්රතිදානය සමඟ සම්බන්ධ වූ උල්පත id ( හෝ eof හෝ full_buffer) expect_out (spawn_id) තුළ ගබඩා කර ඇත.

-timeout ධජය දැනට පවතින අපේක්ෂිත විධානය මඟින් පහත අගයන් කල්ඉකුත්වීමක් ලෙස භාවිතා කරයි.

ප්රකෘති අනුව, සැකසීම් වර්තමාන ක්රියාවලියෙන් නිමැවුම් වලට සමාන වේ. කෙසේ වෙතත් -i ධජය නම් කරන ලද spawn_id ලැයිස්තුවෙන් පහත දැක්වෙන රටාවන්ට අනුකූලව (ඊළඟ -අ ) දක්වා ප්රකාශයට පත් කරනු ලැබේ. Spawn_id ලැයිස්තුව විය යුත්තේ spawn_ids හෝ ලැයිස්තු ගත කළ විචල්ය ලැයිස්තුවේ විචල්ය ලැයිස්තුවකි.

නිදසුනක් ලෙස, පහත සඳහන් උදාහරණ වත්මන් ක්රියාවලියෙන් "සම්බන්ධිත" වේ, හෝ "process" විසින් නම් කරන ලද spawn_id වෙතින් "කාර්යබහුල", "අසාර්ථකයි" හෝ "අවලංගු මුරපදය" බලා සිටියි.

{-i $ proc2 කාර්යබහුලයි = කාර්යබහුලයි; exp_continue} -re "අසාර්ථකයි | අවලංගු මුරපදය" කල් ඉකුත්වීම අවලංගුයි සම්බන්ධිතව}

ගෝලීය විචල්යය any_spawn_id අගය දැනට පවතින අපේක්ෂිත විධානයන් තුළ අනෙකුත් සියලු -I flags සමඟ නම් කරන ලද ඕනෑම spawn_ids සඳහා අනුපිළිවෙලට අනුරූප කිරීමට භාවිතා කල හැක. කිසිම සම්බන්ධිත රටාවක් නොතිබූ -i ධජයෙන් spawn_id (එනම්, වහාම වෙනත් -i විසින් අනුගමනය කරනු ලැබේ) ඕනෑම වෙනත් රටාවන්ට ඕනෑම ආකෘතියක් ලබා ගත හැකි ඕනෑම_spawn_id සමග සම්බන්ධ වූ එම විධානයම ලබා ගත හැකිය .

-i ධජය ගෝලීය විචල්යයක් ද හැඳින්විය හැක. එවිට විචල්යය කියනු ලබන්නේ spawn ids ලැයිස්තුවටයි. මෙම විචල්යය වෙනස් වන විට එය නැවත කියවා ඇත. විධානය ක්රියාත්මක කිරීමේදී I / O ප්රභවය වෙනස් කිරීමේ ක්රමයක් මෙය සපයයි. මෙයින් ලබා දී ඇති ස්පන් අයිඩර් යනු "සෘජු" spawn ids යනුවෙන් හැඳින්වේ.

බිඳී යාම සහ අඛණ්ඩ ක්රියාකාරීත්වය සාමාන්ය ක්රමයේ හැසිරීමට පාලක ව්යුහයන් (එනම්, ප්රොක් ) වලට හේතු වේ. විධානය exp_continue සාමාන්යයෙන් එය ආපසු යෑමට වඩා වැඩි වශයෙන් ක්රියාත්මක කිරීමට බලාපොරොත්තු වන බව අපේක්ෂා කරයි.

නිශ්චිත වළලු වළක්වා ගැනීම හෝ නැවත නැවත බලාපොරොත්තු වන ප්රකාශයන් මඟහැරීම සඳහා මෙය ප්රයෝජනවත් වේ. පහත දැක්වෙන උදාහරණ වන්නේ Rlogin ස්වයංක්රීයකරණය සඳහා කොටසක කොටසකි. Exp_continue දෙවන බලාපොරොත්තුවක් ලිවීමට ( රීප් එක සොයන්න) ලිවීම වැළැක්වීමට රිලින් මුරපදයක් ඉල්ලා සිටියි නම්.

$ {hostname} සඳහා $ {user for $ user) සඳහා {මුරපදය: {stty -echo send_user "මුරපදය සඳහා ($ user) සඳහා" expect_user -re "(. *) \ n" send_user "\ n" send "$ expect_out (1, string) echo exp_continue} වැරදියි {send_user "අවලංගු මුරපදය හෝ ගිණුම \ n" exit} timeout {send_user " නැවත $ විමසුමක්}

නිදසුනක් වශයෙන්, දැනටමත් මුලුමනින් ම ස්වයංක්රීයකරණය වන අන්තර්ක්රියාකාරකයක් මාර්ගගතව පහත දැක්වෙන fragment එක භාවිතා කරයි. මෙම අවස්ථාවේදී, ටර්මිනලය රවුම් ආකාරයට දමනු ලැබේ. පරිශීලකයා "+" එබී බලන්නේ නම්, විචල්යය වැඩිවේ. "P" ස්පර්ශ කර ඇත්නම්, ආපසු ලැබෙන ක්රියාවලිය ක්රියාවලිය වෙත යවනු ලැබේ, සමහර විට එය යම් ආකාරයකින් වසා දමන්න, සහ "i" ක්රියාවලිය සමඟ පරිශීලකයා සමඟ අන්තර් ක්රියාකාරීත්වයට ඉඩ සලසමින්, තිරපිටපතෙන් පාලනයෙන් සොරකම් කිරීම සොරකම් කරයි. සෑම අවස්ථාවක දී, exp_continue වත්මන් ක්රියාවලිය ක්රියාත්මක කිරීමෙන් පසුව වර්තමාන අපේක්ෂාවන් අනුපිළිවෙල දිගටම අපේක්ෂා කරයි.

stty raw -echo expect_after {-i $ user_spawn_id "p" {යැවීම \ r \ r \ r "; exp_continue} "+" {incr foo; exp_continue} "i" {interact; exp_continue} "ඉවත්ව" පිටවීම}

පෙරනිමියෙන්, exp_continue කල් ඉකුත්වීමේ වේලාව යලි සකසයි . Exp_continue -continue_timer ධජය සමඟ කැඳවනු ලැබේ නම්, ටයිමරය නැවත ආරම්ඹ නොවේ.

බලාපොරොත්තුවෙන්
අපේක්ෂා හා පෙරටුවෙන් අනුමාන කළ හැකි රටාවන් නම් බලාපොරොත්තු වූ රටාව අපේක්ෂා කළ යුතුය. වැඩි විස්තර සඳහා expect_before විධානය බලන්න.

expect_background [expect_args]
කෙසේ වෙතත් එය වහාම ආපසු පැමිණේ. නව ආදානය පැමිණෙන සෑම මොඩලයක්ම පරීක්ෂා කරනු ලැබේ. රටාව හා කල් ඉකුත්වීම රටාව අපේක්ෂා කිරීම සඳහා පසුබට වන අතර නිහඬව ඉවතලනු ලැබේ. එසේ නොමැති නම් expect_background විධානය බලාපොරොත්තු අපේක්ෂාවෙන් හා බලාපොරොත්තු අපේක්ෂාවන්ට සමාන ලෙස අපේක්ෂා කරයි.

Expect_background actions ඇගයීම සිදුකරන විට, එකම උද්ඝෝෂණය සඳහා පසුබිම් සැකසුම අවහිර වේ. ක්රියාවලිය සම්පූර්ණ වූ විට පසුබිම් සැකසුම අවහිර කරනු ලැබේ. පසුබිම් සැකසුම අවහිර කර ඇති අතර, එය (පෙරබිම) සිදුකිරීමට හැකි වනුයේ එම spawn id එක මතය.

Expect_background unblocked යන අපේක්ෂාවෙන් අපේක්ෂා කරන්නට නොහැකිය . කිසියම් දේපලක් සඳහා අපේක්ෂා කර ගැනීම සඳහා අපේක්ෂා කිරීමක් මැකෙනු ඇත. කිසිදු රටාවක් සහිත expect_background ප්රකාශයට පත් කිරීම පසුබිම් හැඳුනුම් අංකයේ පසුබිමට ගැලපීමේ හැකියාවෙන් ඉවත් වේ.

අපේක්ෂා කරන්න කලින් [expect_args]
කෙසේ වෙතත් එය වහාම ආපසු පැමිණේ. පහත දැක්වෙන අපේක්ෂිත විධාන වලට මින් පෙර මෑත අපේක්ෂා කළ පෙරාතුව , එකම උල්පතකි හැඳුනුම්පත සමග මනඃකල්පිත ක්රියාකාරී යුගල නිරූපණය කරනු ලැබේ. යම් රටාවකට ගැලපෙන්නේ නම්, එය බලාපොරොත්තු වූ විධානයන් හි සඳහන් කර ඇති බව සලකනු ලැබේ, එය අදාල අපේක්ෂිත විධානයේ සන්දර්භය තුළ ආශ්රිත ශරීරය ක්රියාත්මක වේ. අපේක්ෂාවන් දෙකෙන් හා අපේක්ෂාවන්ට අනුකූල නම් , අපේක්ෂා පෙර සැකසුම භාවිතා වේ.

කිසිදු රටාවක් නියම කර නොමැති නම්, උල්පත හැඳුනුම්පත කිසිදු රටාවක් සඳහා පරීක්ෂා නොකෙරේ.

-i ධජය විසින් අභිභවනය නොකළහොත්, pattern_pefore විධානය ක්රියාත්මක කරන අවස්ථාවේ දී අර්ථ දක්වන ලද spawn id එකට ගැලපෙන අපේක්ෂාවන් පෙර නොතිබුනේ නම් (එහි රටාවට අනුකූල නොවන විට).

මෙම තොරතුරු කොඩියේදී එය ගැලපෙන්නේ කුමන රටාවන්ගේ වර්තමාන පිරිවිතරයන් ආපසු ලබා දීමටය . පෙරනිමියෙන්, එය වර්තමාන ආරුක්කු හැඳුනුම මත වාර්තා කරයි. මෙම උගුලේ හැඳුනුම්පත පිළිබඳ තොරතුරු සඳහා විකල්ප දේවානුජික හැඳිනුම් විශේෂණය ලබා දිය හැකිය. උදාහරණයක් වශයෙන්

expect_before -info -i $ proc

වැඩි හරියක් එක් එක් විශේෂිත හැඳුනුම්පතේ විස්තරයක් ලබා දිය හැකිය. ධජය -indirect සෘජු පිරිවිතර වලින් පමණක් එන සෘජු ආරුක්කු හැඳුනුම් මර්දනය කරයි.

ධ්රැවීය id specification වෙනුවට, "-all" ධජය "-info" සියලු spawn ids මත වාර්තා කරනු ඇත.

-info කොඩියේ ප්රතිදානය නැවත අපේක්ෂා කළ තර්කය ලෙස නැවත භාවිතා කළ හැක.

expect_tty [expect_args]
එය අපේක්ෂා කරන නමුත් එය අක්ෂර කියවිය / dev / tty (එනම්, පරිශීලකයා සිට ඇති යතුරු). ප්රකෘති ලෙස, කියවීම සිදුකරන ලද්දේ පිසූ ආකාරයෙන්ය. එමනිසා, පේළි අපේක්ෂා කිරීම අපේක්ෂා කිරීම සඳහා රේඛා නැවත පැමිණිය යුතුය. මෙය stty හරහා වෙනස් කළ හැක (පහත දැක්වෙන stty විධානය බලන්න).

expect_user [expect_args]
එය අපේක්ෂා කරන නමුත් ස්ටින් සිට අක්ෂර කියවීම (පරිශීලකයාගෙන් යතුරු කිරීම). ප්රකෘති ලෙස, කියවීම සිදුකරන ලද්දේ පිසූ ආකාරයෙන්ය. එමනිසා, පේළි අපේක්ෂා කිරීම අපේක්ෂා කිරීම සඳහා රේඛා නැවත පැමිණිය යුතුය. මෙය stty හරහා වෙනස් කළ හැක (පහත දැක්වෙන stty විධානය බලන්න).

දෙබස්
නව ක්රියාවලියක් නිර්මාණය කරයි. නව ක්රියාවලියේ වර්තමාන Expect ක්රියාවලියෙහි නිවැරදි පිටපතක් වේ. සාර්ථකත්වයට, ෆෝක් නව (ළමා) ක්රියාවලිය වෙත 0 වෙත ආපසු ගෙන දරුවාගේ ක්රියාවලියේ ක්රියාවලිය මාපිය ක්රියාවලිය වෙත ආපසු ලබා දෙනු ඇත. අසමත් වීම (සම්පත් නොමැතිකම හේතුවෙන්, නිදසුනක් ලෙස, ස්වැප් අවකාශය, මතකය) නිසිපරිදි නිසා , ෆෝක් වෙත ආපසු පැමිණෙන්නේ -1 මාපිය ක්රියාවලිය වෙත වන අතර, දරුවෙකුගේ ක්රියාවලියක් නිර්මාණය නොවේ.

මුල් ක්රියාවලිය මෙන් ම, පිටවීමේ ආඥාපනත හරහා පිටතට විදින ක්රියාවලියන් පිටවීම. ලොග් ෆෝඩර් ලිවීම් ගොනු වලට ලියන්න. ඔබ විසින් ක්රියාවලි බොහොමයක දෝශහරණය හෝ ලොග් වීම අක්රීය නොකළහොත් ප්රතිඵලය ව්යාකූල වේ.

ඇතැම් පාඨකයන් හා ලේඛකයින් විසින්, සමහර අවස්ථාවලදී පවා සමහර ව්යාකූලතා ව්යාකූල විය හැක. මේ නිසා, උකුල් සැකසීමේ ක්රියාවලියකට පෙරාතුව වඩාත් ආරක්ෂාකාරී වේ.

[සිරස් 1] ... [කෙණ්ඩු]]
වත්මන් ක්රියාවලිය පරිශීලකයා වෙත පාලනය ලබා දෙයි, එමගින් වත්මන් ක්රියාවලිය වෙත යතුරු එවීම සිදුකරන අතර වර්තමාන ක්රියාවලියේ stdout සහ stderr ආපසු ලබා දෙනු ලැබේ.

String-body යුගල පරාමිතීන් ලෙස දැක්විය හැක. එමනිසා අදාල සිරස් ඇතුල් වන විට ශරීරය ක්රියාත්මක වේ. (පෙරනිමිය ලෙස, වත්මන් ක්රියාවලියට යවනු නොලැබේ.) අවසන් සිරුර අතුරුදහන් නම්, පරිවර්ථක විධානය උපකල්පනය කරනු ලැබේ.

සම්පූර්ණ අන්තර් ක්රියා ප්රකාශයට පරාමිතීන් එක් පේළියකට වඩා අවශ්ය නම්, එක් එක් රේඛාව backslash සමග නතර කිරීම වැළැක්වීම සඳහා එක් එක් තර්කයක් "එක්කරනු" හැකි ය. මෙම එක් අවස්ථාවක දී, සාමාන්ය ටීක් ආදේශක වරහන් නොකෙරේ.

උදාහරණයක් ලෙස, පහත දැක්වෙන විධානය ක්රියාත්මක වන්නේ පහත දැක්වෙන string-body pairs අර්ථ දැක්වීමෙනි: ↑ Z ටයිප් කළ විට, අපේක්ෂා කිරීම අත්හිටවනු ලැබේ. ( -reset ධජය ටර්මිනල් ආකෘති නැවත ප්රතිස්ථාපනය කරයි.) ^ A යතුර එබූ විට, පරිශීලකයා "පාලකය ටයිප් කළ" ඔබ දකින අතර ක්රියාවලිය A ^ A වෙත යවයි. $ Pressed විට පරිශීලකයා දිනය දකියි. ^ C පීඩනය යෙදී ඇති විට, අපේක්ෂා කරයි. "Foo" ඇතුළත් කර ඇත්නම්, පරිශීලකයා "බාර්" සලකයි. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

CTRLZ \ 032 ලෙස සකසන්න {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "ඔබ ටයිප් කළ-A \ n"; "001"} $ {send_user "දිනය වේ [ඔරලෝසු ආකෘතිය [තත්පර තත්පර]].}} \ 003 exit foo {send_user" බාර් "} ~~}

ශ්රේණියේ සිරස් යුගල තුළ, ඒවා තර්ක ලෙස ලැයිස්තුගත කර ඇති අනුපිළිවෙලෙහි අනුපිළිවෙලකට අනුකූල වේ. අර්ධ වශයෙන් ගැලපෙන කෙඳි දැනට පවතින ක්රියාවලිය වෙත යවන ලද ඉතිරි කාලය අපේක්ෂාවෙන්. තවදුරටත් චරිතයක් විය නොහැකි වන පරිදි අක්ෂර ඇතුළත් කලහොත්, තවත් තරගයක් ඇරඹිය නොහැකි ක්රියාවලියක් සඳහා පෙළේ කොටස පමණක් යවනු ලැබේ. එබැවින්, අනුපිළිවෙලට උත්සහ කිරීමට උත්සහ කිරීමේ මුල් අකුරු අවසානයේදී අසාර්ථක වුවහොත්, අර්ධීය තරඟ වල උපකල්පනවලට අනුකූල විය හැකිය.

ප්රකෘති අනුව, අනුපිළිවෙලට අනුකූල නොවන වක්ර කාඩ්පත් සමඟ නිවැරදි වේ . (ප්රතිවිරුද්ධව, අපේක්ෂිත විධානය ගෝලීය ආකාරයේ රටා පෙරනිමියෙන් ප්රකෘතිමත් කරයි.) -ex ධජය එසේ කිරීමෙන් එකිනෙකට සම්බන්ධ කරන ලද ධජයන්ට ගැලපෙන ආදර්ශ ආරක්ෂා විය හැක. "-" ආරම්භ වන ඕනෑම රටාවක් මෙම ආකාරයෙන් ආරක්ෂා කළ යුතුය. (අනාගතයේ විකල්පයන් සඳහා වෙන්කර ඇති සියලුම "-" නූල්).

මෙම ධජය රෙජිස්ටර් ක්රමයේ රටාවක් ලෙස අර්ථ දැක්වීමට යොදා ගනී. මෙම අවස්ථාවෙහිදී අනුපිළිවෙළට ගැලපෙන වෙනස්කම් expect_out තුළ එහි ප්රතිදානය ගබඩා කරනු ලබන ආකාරය සමාන ලෙස විචල්යය interact_out වල ගබඩා කර ඇත. මෙම -indices ධජය සහය දක්වයි.

Eof රටාව අවසානයේ දී ක්රියාත්මක කරන ක්රියාවක් හඳුන්වා දෙයි. වෙනම ඊයම් රටාවක්ද අනුගමනය කළ හැකි පිටපතක් අනුගමනය කළ හැකිය. එහි ප්රතිඵලයක් ලෙස එය eof අනාවරණය වන විට ප්රතිදානය ලිවීම සිදු කරයි. පෙරනිමි eof ක්රියාමාර්ගය "ආපසු" වන අතර, එම සම්බන්ධතාවයන් සරලව EOF මත නැවත පැමිණේ.

කාල සීමාව කල් ඉකුත්වීම (තත්පර වලින්) හඳුන්වා දෙයි, යම්කිසි චරිතයක් කියවන ලද කාලයකට පසුව කියවන ලද ක්රියාවක්. කල්ඉකුත්වීමේ රටාව මෑතකදී නිශ්චිතව දක්වා ඇති ක්රියාවලියට අදාළ වේ. ප්රකෘති කල් ඉකුත්වීමක් නොමැත. විෙශේෂ විචලනය වන "කල්ඉකුත්වීම" (අක්ෂර වින්යාසය භාවිතා කරනු ලබන) ෙමම කාලසීමාව සඳහා බලපානු ෙනොලැෙබ්.

නිදසුනක් වශයෙන්, පැයකට කිසිවක් යතුරු ලියනය නොකළ පරිශීලකයන් ස්වයං වින්දනය සඳහා පහත දැක්වෙන ප්රකාශය යොදා ගත හැකි නමුත් නිතරම පද්ධති පණිවුඩ ලබා ගන්නේ කවුරුන්ද:

interact -input $ user_spawn_id timeoutout 3600 return -output \ $ spawn_id

මෙම රටාව මූලික අරුත null නම් , සහ nulls අවසර ලබා දී ඇත ( remove_nulls විධානය මඟින්), අදාල ASCII 0 එකට සමාන නම් අදාල සිරුර ක්රියාත්මක වේ. Glob හෝ regexp රටා මගින් 0 බයිට්ස් සමඟ ගැලපීමට නොහැක.

ධජය සමඟ ලියන ලද රටාවක් සහිත රටාවක් පිටපත් කිරීම මඟින් විචල්යය interact_out (spawn_id) රටාව (හෝ eof) වලට ගැලපෙන spawn_id වෙත යොමු වේ.

බිඳී යාම සහ අඛණ්ඩ ක්රියාකාරීත්වය සාමාන්ය ක්රමයේ හැසිරීමට පාලක ව්යුහයන් (එනම්, ප්රොක් ) වලට හේතු වේ. කෙසේ වෙතත් ආපසු පැමිණීම එහි ඇමතුම වෙත ආපසු යාමට අන්තර් ක්රියා කරයි. උදාහරණයක් ලෙස, "proc foo" ලෙස ක්රියා කරන ලද අන්තර් ක්රියාකාරී ක්රියාවක් නම් , proc foo නැවත පැමිණෙනු ඇත. (මෙය අන්තර්ක්රියාකාරී ඇමතුම් අර්ථ කථන නම් අන්තර්ක්රියාකාරී ලෙස ටයිප් කිරීමෙන් නැවත නැවතත් අන්තර් ක්රියා කිරීමට හේතු වන අතර, අන්තර් සබඳතාව නැවත නැවතත් ඇමතුම වෙත නැවත පැමිණෙනු ඇත.)

අන්තර්ක්රියා අතරතුර, සාමාන්ය චරිතය වර්තමාන ක්රියාවලිය වෙත මාරු කරනු ලැබේ. වත්මන් ක්රියාවලිය රැකියා පාලන සංඥා අල්ලා නොගන්නේ නම්, එය නැවතුම් සංඥාවක් යැවීමෙන් නතර වනු ඇත (ප්රකෘතිමෙයන් ↑ Z). එය නැවත අරඹන්න, දිගටම සංඥාවක් යවන්න ("kill -CONT" මගින්). ඔබ එවැනි ක්රියාවලියකට SIGSTOP යැවීමට අවශ්ය නම් (^ Z) මගින්, ප්රථමයෙන් cshnet csh සලකන්න, පසුව ඔබේ වැඩසටහන ක්රියාත්මක කරන්න. අනෙක් අතට, ඔබට SIGSTOP යැවීමට ඔබට අවශ්ය නම්, පළමුව කෝල් පරිවර්තකය (සමහරවිට escape අක්ෂර භාවිතා කිරීමෙන්), පසුව Z Z ස්පර්ශ කරන්න.

අක්ෂර වින්යාස පරිවර්තකයට ඇතුළු වීමට හා අනෙකුන්ගේ විධාන ක්රියාත්මක කිරීම වැළැක්වීම සඳහා සරල වර්ණ සබන් භාවිතා කළ හැක. සිරස් යුගලයේ සිරුර ක්රියාත්මක වන අතර කලින් භාවිතා කරන ලද පර්යන්තය භාවිතා වේ.

ප්රවේගය සඳහා, සාමාන්ය සැකසුම මඟින් අමු ප්රකාරයේදී ක්රියාත්මක වේ. -reset ධජය ක්රියාකරවීමට පෙර එය ක්රියාත්මක කරන ලද ආකාරයේ තලය වෙත මාරු කරනු ලැබේ ( නිසැකවම , පිසින ලද ප්රකාරය). ප්රකාරය මාරු කරන විට අක්ෂර ඇතුළත් කළ හැකි අකුරු අහිමි විය හැකිය (සමහර පද්ධති මත තාවකාලික ධාවකයෙහි අවාසනාවන්ත ලක්ෂණයකි). භාවිතා කිරීමට ඇති එකම හේතුව -reset යනු ඔබගේ ක්රියාව පිසින ලද ආකාරයේ ක්රියාත්මක වීම මත රඳා පවතී නම්.

-echo ධජ සෑම චරිතයක්ම කියවන විට ඒවා ජනනය කළ ක්රියාවලියට අනුපිළිවෙලට අනුපිළිවෙලට අනුකූල වන අකුරු යවයි. පරිශීලකයා අර්ධ වශයෙන් ටයිප් කළ රටාවන්ගෙන් ප්රතිචාර ලබා ගැනීමට අවශ්ය විට මෙය ප්රයෝජනවත් විය හැකිය.

රටාව අනුකරණය කරමින් සිටින නමුත් එය අවසානයේ නොගැලපේ නම් චරිතය උත්පාදන ක්රියාවලිය වෙත යවනු ලැබේ. උත්පේරක ක්රියාවලිය ඔවුන් විසින් උච්චාරණය කරනු ලැබුවහොත්, පරිශීලකයා දෙවරක් දිස් වනු ඇත. පරිශීලකයා ආදර්ශය සම්පූර්ණ කිරීමට නොහැකි බව සිතිය හැක. නිදසුනක් ලෙස, පහත දැක්වෙන උපුටා දැක්වීම යනු rftp, recursive-ftp විධානාවලියෙන්, පරිශීලකයා හට ~ g, ~ p, හෝ ~ ll ඇතුල් කිරීමට ඉල්ලා සිටිනු ඇති අතර, වර්තමාන ඩිරෙක්ටරය නැවත ලබා ගැනීමට, යලි තැබීමට හෝ ලැයිස්තුගත කිරීමට. සාමාන්යයෙන් මෙම ftp විධානයන්ගෙන් දුරස්ථව පිහිටා ඇති අතර, පරිශීලකයා වැරදි ලෙස හැර වෙනත් කිසිවක් අනුගමනය කිරීමට අකර්මණ්ය නොවන බව පෙනේ. එසේනම්, ඔවුන් කෙසේ හෝ ප්රතිඵලය නොසලකා හරිනු ඇත.

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

අකුරු කියවන විට නිමැවුම් ක්රියාවලියට අනුපිළිවෙලට අනුපිළිවෙලට අනුකූල නොවන අක්ෂරයන් එන්බුෆර් ධජය යවයි.

මෙම ක්රමලේඛය අනුගමනය කළ හැකි ක්රමයක් අනුමත කිරීමට ඉඩ දීම සඳහා මෙය ප්රයෝජනවත් වේ. උදාහරණයක් ලෙස, පුද්ගලයෙකු ඇමතීමෙන් කොතැනකදී අධීක්ෂණය කිරීමට පහත දැක්වෙනු ඇත (හේයිස්-මෝඩමය). සෑම විටම "atd" දක්නට ලැබේ.

proc න් ලොජිස් අංකය {} {interact -nobuffer -re "(. *) \ r" ආපසු පැටවෙන්නේ $ log "ලෙසය. [clock format [clock seconds]]: dialed $ interact_out (1, string)"} interact -nbuffer "atd"

අන්තර් ක්රියාකාරී වන විට , පෙරගෙවුම් භාවිතය log_user නොසලකා හරිනු ලැබේ. විශේෂයෙන්ම, අන්තර් ක්රියාකාරීත්වය එහි නිමැවුම් සටහන් කර තැබීම (සම්මත නිමැවුම් වෙත යවනු ලැබේ), පරිශීලකයා අන්ධ ලෙස අන්තර්ක්රියා කිරීමට අදහස් නොකෙරේ.

-o ධජය වත්මන් ක්රියාවලියේ ප්රතිදානය සඳහා පහත දැක්වෙන ප්රධාන-ශරීර යුගලයන් යෙදවිය හැක. උදාහරණයක් ලෙස, ටෙලි සන්සිනයක් තුළ අනවශ්ය අක්ෂර යැවිය හැකි ධාරකයන් සමඟ කටයුතු කිරීමේදී මෙය ප්රයෝජනවත් විය හැකිය.

පෙරනිමිය ලෙස, පරිශීලකයා අපේක්ෂා කිරීමේ ක්රියාවලියේදී ස්ටොඩ්ට් කියවීමෙන් ස්ටැන්ඩින් ලිවීමට හා කියවීමට අදහස් කරයි. -u ධජය ("පරිශීලකයා" සඳහා) පරිශීලකයාගේ තර්කය අනුව ක්රියාවලිය ලෙස පරිශීලකයා ලෙස ක්රියා කරයි.

මෙය නිසියාකාරව ක්රියාවට නංවා නොගනී. දෝෂ නිරාකරණය සඳහා ආධාර කිරීම, රෝග නිර්ණයන් සැමවිටම stderr වෙත යන්න (හෝ සමහරක් ලොගින් හා දෝෂ හී තොරතුරු සඳහා stdout). එම හේතුව නිසාම පරිවර්ථක විධාන රේඛාවේ සිට අන්තර් ක්රියාකාරී ලෙස කියවනු ලැබේ.

නිදසුනක් ලෙස, පහත දැක්වෙන කොටස ඇතුල් වීමේ ක්රියාවලියක් නිර්මාණය කරයි. ඉන්පසුව එය භාවිතා කරන්නා (නොපෙන්වන) භාවිතා කරයි. අවසානයේදී එම දෙක එකිනෙක සම්බන්ධ කරයි. ඇත්ත වශයෙන්ම, ඕනෑම ක්රියාවක් සඳහා පිවිසුම ආදේශ කළ හැකිය. නිදසුනක් ලෙස, ශෙලයයක්, ගිණුමක් සහ මුරපදයක් ලබා නොදී වැඩ කිරීමට පරිශීලකයාට අවසර දෙනු ඇත.

spawn login set login $ spawn_id spawn tip මොඩම # පරිශීලක වෙත ආපසු අමතන්න # පුරනය වීමට පරිශීලකයා සම්බන්ධ කරන්න -u $ පිවිසුම

බහු ක්රියාවලි සඳහා ප්රතිදානය යැවීම සඳහා, -output ධජයකින් පෙරාතුව සෑම ඉතුරුම් හැඳුනුම් ලයිස්තුව ලැයිස්තුගත කරන්න. නිමැවුම් ධජ ප්රභේද්යයක් සඳහා වූ ආදානය - ආදානය ධජයකින් පෙරාතිබූ අතුරුදහන් වූ ලයිස්තුවේ ලැයිස්තුව මගින් තීරණය කළ හැකිය. (Both -input සහ -output යන දෙකම එකම ආකාරයේ ලැයිස්තුගත කළ හැකි විධානයක -i ධජය ලෙස එකම ආකෘතියේ ලැයිස්තු ගත කල හැක, ඕනෑම ඕනෑම_spawn_id අන්තර් ක්රියාකාරීත්වයේ අර්ථවත් නොවේ.) අනෙක් පහත දැක්වෙන ධජ සහ අච්චු (හෝ රටාවන්) යෙදවුම් ධජය දිස්වේ. නැත - ආදානය කිසිවක් නැතහොත් -output implies "-input $ user_spawn_id -output". (සමානුපාතිකව, නොමැති වූ රටාවන් සමඟ ආවරණ සහිත ). එක් -input නිශ්චිත නම්, එය $ user_spawn_id යටපත් කරයි. දෙවන- ආදානය නිෂ්චිත නම්, එය $ spawn_id පරාවර්තනය කරයි. අතිරේක- ආදාන කොඩි නිශ්චය කළ හැකිය.

උපප්රවර්ග යෙදවුම් ක්රියාවලියන් දෙකම ඔවුන්ගේ නිමැවුම් නිශ්චිතව $ spawn_id සහ $ user_spawn_id ලෙස යොදනු ලැබේ. -output ධජයක් නොමැතිව -output ධජයක් සමඟ දිස්වන්නේ නම්, එම ක්රියාවලියෙහි අක්ෂර ඉවතලනු ලැබේ.

-i ධජය වෙනත් ස්පර්ශ හෝ පිට්ටන කොඩි භාවිතා නොකරන විට වත්මන් spawn_id සඳහා ආදේශ කරයි. A-i ධජය -o ධජය යන්නෙන් අදහස් කෙරේ.

සෘජු spawn ids භාවිතා කිරීමෙන් අන්තර් ක්රියාකාරී වන ක්රියාවලීන් වෙනස් කළ හැකිය. (වක්රාම් අයිකන ids අපේක්ෂිත විධානයෙහි කොටසෙහි විස්තර කර ඇත.) වක්ර-යොමු, id-i, -u, -input හෝ -output ධජ සමඟ සම්ප්රේෂණය කල හැක.

පරිවර්තකය [තර්ක කරයි]
පරිශීලකයා Expect සහ Tcl විධානයන් සඳහා අන්තර් ක්රියාකාරී ලෙස විමසනු ඇත. එක් විධානයක ප්රතිඵල මුද්රණය කෙරේ.

බිඳී යාම සහ අඛණ්ඩ ක්රියාකාරීත්වය සාමාන්ය ක්රමයේ හැසිරීමට පාලක ව්යුහයන් (එනම්, ප්රොක් ) වලට හේතු වේ. කෙසේ වෙතත් ආපසු පැමිණීමට පරිවර්ථකයාට තම ඇමතුම්කරු වෙත ආපසු පැමිණීමට හේතු වන අතර, inter_return විසින් තම ඇමතුම්කරු තුළ නැවත පැමිණීමට හේතු වනු ඇත. උදාහරණයක් ලෙස, "proc foo" නම් පරිවර්ථකයා ලෙස ක්රියා කළ interinterpreter ලෙස නම් , proc foo නැවත පැමිණෙනු ඇත. වෙනත් විධානයන් විසින් නව විධානයන් සඳහා ඉදිරියට යාමට පරිවර්ථකයාට හේතු වේ.

පෙරනිමියෙන්, විමසුමේ අංකයන් දෙකක් ඇත. පළමු පූර්ණ සංඛ්යා අගය ඇගයුම් අනුක්රමයේ ගැඹුර විස්තර කරයි (එනම්, කොපමණ වාරයක් Tcl_Eval ඇමතනු ලැබ ඇත). දෙවන පූර්ණ සංඛ්යා යනු Tcl ඉතිහාස හඳුනාගැනීමේ ක්රමයයි. "විමසුම 1" ලෙස හැඳින්වෙන ක්රියා පටිපාටිය අර්ථ දැක්වීමෙන් විමසනු ලැබේ. ප්රකාශයක් විවෘත වස්තූන්, පරාමිතියන්, වරහන්, හෝ වරහන්, ද්විතියික විමසුමක් (සාමාන්යයෙන් "+>") නිකුත් කරනු ලැබේ නම්, නව පේළියේ නිකුත් කෙරේ. ද්විතීයික විමසුම "prompt2" ලෙස හැඳින්විය හැක.

භාෂණ රිවේතෙයකු , එහි අමතන්නා රහිත ආකාරෙය් ෙයොදා ඇත්නම්, පිසින ලද මාතය භාවිතා කරයි.

ස්ටෑන්ඩය වසා දමා තිබේ නම්, -e කොඩිය භාවිතා නොකළහොත් භාෂණ පරිවර්තකය නැවත ලබා දෙනු ඇත, එවිට පහත සඳහන් තර්කය ආයාචනය කෙරේ.

log_file [args] [[-a] ගොනුව)
ගොනු නාමයක් ලබාදී ඇත්නම්, ගොනුව තුල සැඟවුණු සැසියේ සටහන් ( log_file) එම වාර්තාවේ සටහන් වනු ඇත. තර්කයක් ලබා නොදේ නම් log_file නතර වනු ඇත. පෙර පිවිසුම් ගොනුව වසා ඇත.

ගොනු නාමයක් වෙනුවට, Tcl ගොනුව හඳුනාගැනීමේ ක්රමය මඟින් -open හෝ -leaveopen ධජ භාවිතයෙන් ලබා ගත හැක. මෙය සමානයි විධාන වලට සමානය. (වැඩි විස්තර සඳහා උල්පත බලන්න.)

-a ධජය log_user විධානය මඟින් යටපත් කරන ලද ප්රෝටෝනයක් ප්රවිශ්ඨ වීමයි .

ප්රකෘති ලෙස, log_file විධානය මඟින් ඒවා අක්රීය කිරීම වෙනුවට පැරණි ගොනු වලට එකතු කිරීම, ලොග් වීම සහ එක් වරකට වාර ගණනකදී වාර ගණනින් හැරවීමට හැකිවීම සඳහා පහසුව ලබා දීම සඳහා වේ. ගොනු කප්පාදු කිරීම සඳහා, -noappend ධජය භාවිතා කරන්න.

තොරතුරු - ධජය log_file මගින් ලබා දී ඇති වඩාත්ම මෑත නොවන තොරතුරු නොවන විචල්යයන් විස්තර කිරීමට නැවත යොමු කරයි.

log_user -info | 0 | 1
පෙරනිමියෙන්, යැවීම / අපේක්ෂා කරන සංවාදය ස්ටැඩ්ට් වෙත පිවිසිය හැක (සහ විවෘත කළහොත් ලොග් ෆිල්ටය). "Log_user 0" විධානය මඟින් stdout වෙත පිවිසීම අක්රිය කර "log_user 1" මඟින් ප්රතිස්ථාපනය කර ඇත. ලොග්ෆයිල් වෙත ලොගනය නොකෙරේ.

මෙම තොරතුරු කොඩිය මඟින් log_user ලබා දෙනුයේ මෑතකාලීන මෑතකාලීන නොවන තර්ක වල විස්තරය.

match_max [-d] [-i spawn_id] [ප්රමාණය]
අපේක්ෂා කිරීමෙන් අභ්යන්තරව භාවිතා කරන බෆරයේ ප්රමාණය (බයිට්ස් වලින්) අර්ථ දක්වයි. ප්රමාණයේ තර්කය නොමැතිව, වත්මන් ප්රමාණය නැවත ලබා දෙනු ලැබේ.

-d ධජය සමඟ, පෙරනිමි ප්රමාණය සකස් කර ඇත. (ආරම්භක පෙරනිමි අගය 2000 කි.) -i ධජය සමඟ, නම් කරන ලද spawn හැඳුනුම් අංකය සඳහා පිහිටුවා ඇත, එසේ නොමැතිව වත්මන් ක්රියාවලිය සඳහා සකසා ඇත.

overlay [- # spawn_id] [- # spawn_id] [...] වැඩ සටහන [තර්ක]
ක්රියාත්මක කරන ලද "වැඩසටහන තර්ක කරයි" දැනට ක්රියාත්මක වන Expect වැඩසටහනේ අවසන් වන අතර, එය අවසන් වේ. අක්ෂරයේ හයිෆන් තර්කය විධාන කවුළුව ඉදිරිපිට අක්ෂර පෙළක් බල කරයි. තර්කයක් ලෙස නම් කර ඇති අනෙකුත් සියලුම spawn_ids වසා ඇත. මෙම ගොනු නාම හඳුනාගැනීම් වලට අනුරූපණය කර ඇත.

නව ක්රමලේඛය උරුම කර ගැනීම සඳහා ගොනු හඳුනාගැනීම් සඳහා Spawn_ids සිතියම්ගත කර ඇත. උදාහරණයක් ලෙස, පහත දැක්වෙන රේඛාව චෙස් ක්රියා කරයි, වත්මන් ක්රියාවලිය මඟින් එය පාලනය කිරීමට ඉඩ දෙයි - චෙස් මාස්ටර් පවසයි.

overlay -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id චෙස්

මෙය "අන්තර් ක්රියාකාරී -U" වලට වඩා කාර්යක්ෂම වේ. කෙසේ වෙතත්, Expect ක්රියාවලිය තවදුරටත් පාලනය කර නොමැති බැවින් එය වැඩසටහන්ගත කර ඇති අන්තර්ක්රියාකාරිත්වයට ඇති හැකියාව පූජා කරයි.

පාලක ටර්මිනාවක් ලබා නොදෙන බව සැලකිල්ලට ගන්න. මෙලෙස, ඔබ සාමාන්ය ආදානය විසන්ධි කිරීම හෝ නැවත හරවා යැවීමෙන්, රැකියා පාලනය කිරීමේ වැඩසටහන් (shells, login, etc) නිසියාකාරව ක්රියාත්මක නොවේ.

සමානතාව [-d] [-i spawn_id] [වටිනාකම]
සමානාත්මතාවයෙන් උපුටා ගත් ක්රියාවලියෙන් පරකෂතාවය රඳවා තබා ගත යුතුය. අගය ශුන්ය නම්, සමතුලිතතාවය ඉවත් කරනු ලැබේ නම්, එසේ නැතිනම් එය ඉවත් නොකෙරේ. කිසිදු අගැයීමේ තර්කය නොමැතිව වත්මන් අගය ආපසු ලබා දෙනු ලැබේ.

-d ධජය සමඟ පෙරනිමි සමානුපාතික අගය සකසා ඇත. (ආරම්භක පෙරනිමි අගය 1 යි, එනම්, සමානුපාතිකය ඉවත් නොකෙරේ.) -i ධජය සමඟ, සමානුපාත අගය නම් කරන ලද spawn හැඳුනුම්පත සඳහා සකසා ඇත, එසේ නොමැතිව වත්මන් ක්රියාවලිය සඳහා සකසා ඇත.

remove_nulls [-d] [-i spawn_id] [අගය]
විචල්යය අපේක්ෂා හෝ ගැලපෙන වෙනස්වීම් අපේක්ෂා කිරීමට හෝ ගබඩා කිරීමට පෙරාතුව නොපවතින ක්රියාවලියේ නිමැවුම් වලින් කිසිවක් රහිතව ඉවත් කර හෝ ඉවත් කර තිබේද යන්න නිර්ණය කරයි. අගය 1 නම්, ශුන්යයන් ඉවත් කරනු ලැබේ. අගය 0 නම්, ශුන්යයන් ඉවත් නොකෙරේ. කිසිදු අගැයීමේ තර්කය නොමැතිව වත්මන් අගය ආපසු ලබා දෙනු ලැබේ.

-d ධජය සමඟ, පෙරනිමි අගය සකසා ඇත. (ආරම්භක පෙරනිමි අගය 1 යි, එනම්, nulls ඉවත් කර ඇත.) -i ධජය සමඟ, එමඟින් නම් කරන ලද spawn id සඳහා අගය සකසා ඇත, එසේ නොමැති නම් වත්මන් ක්රියාවලිය සඳහා සකසා ඇත.

Nulls ඉවත් කර ඇත්ද? නැතහොත් නෝට්ටුව සහ stdout වෙත අපේක්ෂා නොකරනු ඇත.

[-flags] ටයිප් කරන්න
වත්මන් ක්රියාවලිය වෙත පෙළ යවයි. උදාහරණයක් ලෙස, විධානය

"hello world"

චරිතය, වර්තමාන ක්රියාවලිය වෙත හෙලෝවෝඩ්ඩර් යවයි. (Tcl ටැම් ඇතුළත් printf- like විධානය ( ආකෘතිය ලෙස හැඳින්වේ) අත්තනෝමතික ලෙස සංකීර්ණ නූල් සෑදිය හැක.)

රේඛා-බෆරයේ යෙදවුම් සහිත වැඩසටහන් නැවත පැමිණෙන චරිතය යවන තෙක් චරිත කියවීමට ඉක්මනින් යවනු ලැබේ. ආපසු චරිතය "\ r" ලෙස දැක්වේ.

කොඩිය වෙනුවට ධජයක් ලෙස අර්ථ දැක්වීමට ඊළඟ තර්කය බල කරයි. ඕනෑම කොළකට ධජයක් ලෙස පෙනෙනවාද නැද්ද යන්න "-" පෙරට යා හැකිය. මෙය අහම්බෙන් පෙනෙන ලෙස කොඩි වගේ පෙනුමකින් තොරව විචල්යයන් නොකෙරෙන විචල්යයන් නියම කිරීම සඳහා විශ්වසනීය යාන්ත්රණයක් සපයයි. (අනාගතයේ විකල්පයන් සඳහා වෙන්කර ඇති සියලුම "-" නූල්).

-i ධජය ප්රකාශයට පත් කරනු ලබන්නේ නම් එම නම spawn_id වෙත යවනු ලැබේ. Spawn_id යනු user_spawn_id සහ ටර්මිනලය රහිත ආකාරයේ පවතී නම්, පේළියේ නව පේළිය නැවත-නව පේලිය අනුපිළිවෙලට පරිවර්ථනය කර ඇත. එමනිසා ඒවායින් පිසින ලද ප්රකාරයේදී මෙන් පෙනී යයි. -මෙම ධජය මෙම පරිවර්ථනය අක්රීය කරයි.

-හතර ධජය අක්ෂර (0 බයිට්ස්) යවයි. පෙරනිමියෙන්, එක් නිකුතුවක් යවනු ලැබේ. පූර්ණ සංඛ්යාවක් අනුගමනය කළ හැකිය.

කඩදාසි කොඩිය හට බිඳී තත්වයක් උත්පාදනය කරයි. මෙම spawn id යනු "spawn -open" හරහා විවෘත කර ඇති tty උපකරණයක් නම් එය අර්ථවත් කරයි. ඔබ ඔත්තුවක් වැනි ක්රියාවක් ආරම්භ කර ඇත්නම්, ඔබ විවේකයක් උත්පාදනය කිරීම සඳහා ඔත්තුව සම්මුතිය භාවිතා කළ යුතුය.

මෙම-ධජය "සෙමින්" යැවීමට නිපදවන බලවේග, එමඟින් එම බෆරයේ කිසි විටෙක නොපැහැදූ පුද්ගලයෙකුට නිර්මාණය කරන ලද ආදාන බෆර් පරිගණකය මගින් පොදු තත්වයක් මග හැරිය යුතුය. මෙම ප්රතිදානය පාලක දෙකක ලැයිස්තුවක් වන "send_slow" අගය අනුව පාලනය වේ. පළමු මූලද්රව්යය පරමාණුකව යැවීම සඳහා බයිට ගණනක් විස්තර කරන පූර්ණ සංඛ්යාවක් වේ. දෙවන මූලද්රව්යය පරමාණුක පණිවිඩ යැවිය යුතු තත්පර ගණන විස්තර කෙරෙන නියම සංඛ්යාවකි. උදාහරණයක් ලෙස, "send_slow {10 .001}" set set "send-ss" යැවෙනුයේ සෑම විනාඩියකටම තත්පර 10 ක් යැවීම සඳහා ය.

-එහි ධජය සත්ය වශයෙන්ම ටයිප් කිරීම වැනි (තරමක) යැවෙනු ඇත. චරිත අතර ඇති මානව-ප්රමාදයන් ප්රමාදවීම. (මෙම ඇලගොරිතම පදනම්ව ඇත්තේ Weibull බෙදාහැරීම මතය. මෙම නිශ්චිත යෙදුමට ගැලපෙන වෙනස්කම් සහිතව). මෙම ප්රතිදානය පාලනය කරනු ලබන්නේ "send_human" යන variable එකේ පහලම ලැයිස්තුවක් වේ. පළමු මූලද්රව්ය දෙකෙහි තත්පර වල චරිත වල සාමාන්ය ප්රතිවිරුද්ධ කාලය වේ. පළමුව භාවිතා කරනු ලබන්නේ පෙරනිමිය. දෙවැන්න නම් වචන අවසානයෙහි භාවිතා වේ. එවැනි මාරුවීම් වලදී කලාතුරකින් සිදු වන සියුම් විරාමයන් සංකේතාත්මක කිරීමට සිදුවේ. තෙවන පරාමිතිය යනු විචල්යතාවයේ මිනුම් .1 හි ඉතා විචල්යය වන අතර, 1 සාධාරණ විචල්යයක් වන අතර, 10 එය අනිත්ය වේ. අන්තයන් 0 දක්වා අනන්තය. අවසාන දෙකේ පරාමිතීන් පිළිවෙළින් අවම සහ උපරිම කාලපරිච්ඡේදය වේ. අවම වශයෙන් සහ උපරිම අවසාන වරට භාවිතා කරන අතර අවසානයේ අවසාන කාල පරිච්ඡේදය භාවිතා කරයි. අවසාන සාමාන්යය අවම අගයට හා උපරිම සිස්පිත පත්රය සඳහා ප්රමාණවත් අගයක් ලබා දෙනු ලැබේ.

උදාහරණයක් ලෙස, පහත දැක්වෙන විධානය වේගවත් හා ඒකාකාර යතුරු ලියනය:

send_human {.1 .3 1 .05 2} send -h "මම බඩගිනි, අපි දිවා ආහාරය ගන්නෙමු."

පහත දැක්වෙනුයේ මුහුකුරා ගිය පසු වඩාත් සුදුසු ය:

send_human {.4 .4 .2 .5 100} send -h "ගුඩ් ඩීඩ් ලැෂ් රාත්රිය!"

දෝෂ නිවැරදි නොවන බව මතක තබාගන්න. නමුත් ඔබ විසින් නිවැරදි කිරීමේදී වැරදි නිවැරදි කිරීමේ සහ වැරදි නිවැරදි කිරීමේදී නිවැරදි කිරීමේදී වැරදි නිවැරදි කර තැබිය හැකිය.

නරක චරිත යැවීම සඳහා ධජයන්, කැඩීම් යැවීම සඳහා, මන්දගාමී නිමැවුම් බලගැන්වීම සහ මානව ශෛල්ය ප්රතිදානය සඳහා අන්යෝන්යව යෙදීම සඳහා වන ධජයන් වේ. අවසාන වශයෙන් පමණක් සඳහන් කරන ලද තැනැත්තා පමණක් භාවිතා කරනු ලැබේ. තව ද, null අක්ෂර හෝ කැඩීම් සඳහා ෆ්ලෑග් සමඟ නිඛිත තර්කයක් නියම කළ නොහැක.

අපේක්ෂා කිරීමෙන් ක්රියාවලියකට පළමු යැවීම පෙරාතුව හොඳ අදහසක් වේ. ක්රියාවලිය ආරම්භ කිරීමට බලා සිටීමට බලාපොරොත්තු වන අතර, යැවිය නොහැක. විශේෂයෙන්, ක්රියාවලිය ඇරඹීමට පෙර පළමු යැවීම සම්පුර්ණ කලහොත්, ඔබගේ දත්ත නොසලකා හැරීමේ අවදානම ඔබ ක්රියාත්මක කරයි. අන්තර්ක්රියාකාරී වැඩසටහන් කිසිදු ආරම්භක පිවිසුමක් නොමැති අවස්ථාවකදී, ඔබ හට ප්රමාද වීමෙන් පසු:

# අන්තරාභිවර්ධකයන්ට ලබා දිමට වැළකී සිටීම වැළැක්වීම සඳහා, # මෙම පද්ධතිය බාහිර මුරපදයක් සඳහා විමසීමක් නොකෙරේ. # Spawn telnet සම්පූර්ණ කිරීම සඳහා තත්පර 5 ක් රැඳී සිටින්න

exp_send යනු යැවීම සඳහා අන්වර්ථයකි . ඔබ Expectk හෝ Tk පරිසරයේ අපේක්ෂා කරන වෙනත් ප්රභේදයක් භාවිතා කරන්නේ නම්, සම්පූර්ණයෙන්ම වෙනස් අරමුණක් සඳහා Tk මගින් එවනු ලැබේ. පරිසරය තුළ අනුකූලතාවය සඳහා exp_send සපයනු ලැබේ. අනෙකුත් අපේක්ෂාවන්ගේ වෙනත් යැවීම් විධාන සඳහා සමාන අන්වර්ථයන් සපයනු ලැබේ.

send_error [-flags] string
එය යවන්නා ලෙස, ප්රතිදානය ස්ටෙඩ්ර්ර් වෙත වත්මන් ක්රියාවලිය වෙනුවට යවනු ලැබේ.

send_log [-] පෙළ
ලින්ක් එක මෙන් ලිවීම ලඝු-සටහන ගොනුව වෙත යැවීම පමණක් සිදු කරයි ( log_file බලන්න.) කිසිඳු ලඝු-සටහන විවෘතව නොමැති තර්කයන් නොසලකා හරිනු ලැබේ.

send_tty [-flags] පෙළ
එය යැවිය යුතු ය , නමුත් අවසන් ප්රතිඵලය වෙනුවට ප්රතිදානය / dev / tty වෙත යැවෙනු ඇත.

send_user [-flags] string
එය යැවිය යුතු අතර , වත්මන් ක්රියාවලිය වෙනුවට ප්රතිදානය ස්ටැඩෝට වෙත යවනු ලැබේ.

නිදි තත්පර
තත්පරයට නියමිත කේතය සඳහා තිරය ​​නිදා ගැනීමට හේතු වේ. තත්පර දශම සංඛ්යාවක් විය හැක. ඔබ බාධා කිරීම් (සහ Exk භාවිතා කරන්නේ නම් Tk සිද්ධීන්) සැතපුම් අපේක්ෂා කරන අතර සැකසෙමින් පවතී.

spawn [args] වැඩසටහන [තර්ක කරයි]
"වැඩසටහන තර්ක" ක්රියාත්මක කරමින් නව ක්රියාවලියක් නිර්මාණය කරයි. එහි ස්ටැන්ඩිනේට්, ස්ටවුට් සහ ස්ටෙඩ්ර්ර් අපේක්ෂා කිරීමට අපේක්ෂා කරයි. එබැවින් අනෙකුත් අපේක්ෂක විධාන මගින් ඒවා කියවා ලිවීමට හැකි වේ. සම්බන්ධතාවය කිට්ටුවෙන් බිඳ වැටී නැතහොත් ක්රියාවලියම ගොනු නාම හඳුනාගැනීම් වසා දමයි නම්.

ක්රියාවලිය ආරම්භ වී ඇති විට, විචල්යය spawn_id එම ක්රියාවලිය සම්බන්ධ විස්තරය වෙත දක්වා ඇත. Spawn_id විසින් විස්තර කර ඇති ක්රියාවලිය "වර්තමාන ක්රියාවලිය " ලෙස සැලකේ. spawn_id කියවීමට හෝ ලිවීමට හැකි අතර, රැකියාවේ පාලනය සැපයීම.

user_spawn_id යනු පරිශීලකට යොමු කරන විස්තරාත්මක පාඨයක් සහිත ගෝලීය විචල්යයකි. උදාහරණයක් ලෙස, spawn_id මෙම අගයට සකසා ඇති විට, බලාපොරොත්තු අපේක්ෂා කරන්නන් ලෙස හැසිරෙන්න.

.I error_spawn_id යනු සම්මත දෝෂයට යොමු වන විස්තරාත්මක පාඨයක් සහිත ගෝලීය විචල්යයකි. උදාහරණයක් ලෙස, spawn_id මෙම අගයට සකසා ඇති විට, send_error වගේ හැසිරීම් එවන්න .

tty_spawn_id යනු / dev / tty වෙත යොමු වන විස්තරාත්මක පාඨයක් සහිත ගෝලීය විචල්යයකි. / Dev / tty නොමැති නම් (cron, at, හෝ batch විධානාවලි වැනි) නම්, tty_spawn_id අර්ථ දැක්වේ නැත. මෙය පරික්ෂා කළ හැකිය:

{{/ vv / tty exists} else {{# / dev / tty exists {# info vars tty_spawn_id]} සමහරවිට # සමහරවිට Cron, කණ්ඩායම හෝ විධානාවලි}

පොටෝ UNIX ක්රියාවලියේ අංකය නැවත පැමිණෙයි. කිසිදු ක්රියා පටිපාටියක් නොතිබුනේ නම්, 0 ආපසු ලබා දෙනු ලැබේ. විචල්යය spawn_out (වහල්, නම) pty කොම්පැණිගේ නමට සකසා ඇත.

ප්රකෘති ලෙස, උච්චාරණය කරන ලද විධාන නාමය සහ තර්ක ප්රතිරෝධය. මෙම- නියෝචෝ ධජය මෙය සිදු නොකෙරේ .

කොන්සියුලර් ධජය වින්යාස ප්රතිදානය නැවතත් යොමු කරන ක්රියාවලිය වෙත යොමු කරයි. මෙය සියලු පද්ධති මත සහාය නොදක්වයි.

අභ්යන්තරව, spawn pty භාවිතා කරයි, පරිශීලකයාගේ TTY ලෙස ආරම්භ කර ඇත. මෙය තවදුරටත් ආරම්භනය කරනු ඇත, සියලු සැකසුම් "වින්ඩෝස්" (stty (1) අනුව). විචල්යය stty_init අර්ථ දැක්වුවහොත්, එය තවදුරටත් වින්යාසගත කිරීම ලෙස ස්ටි තර්කයේ අර්ථ දැක්වෙනු ඇත. උදාහරණයක් ලෙස, "set stty_init raw" සැකසීමට තවත් හේතුවක් වනු ඇත. -nototcopy පරිශීලකයාගේ TTY මත පදනම්ව ආරම්භකත්වය අහෝසි කරයි. -nottyinit "වින්ඩෝස්" ආරම්භනය අවහිර කරයි.

සාමාන්යයෙන්, උල්පත ක්රියාත්මක කිරීම සඳහා සුළු කාලයක් ගතවේ. ඔබ බොහෝ කාලයක් සැලකිය යුතු කාලයක් ගත කරන විට, එය පැටවිය හැකි ptys පැමිණ ඇත. සංකූලතා සහිත ගැටළු වළක්වා ගැනීම සඳහා ප්තිමාණයන් මත පරීක්ෂණ කිහිපයක් සිදු කරයි. (මෙම තත්පර 10 තත්පර සඳහා ගත යුතු වේ.) -d විකල්පය සමඟ ධාවනය අපේක්ෂා කරනු ඇත අපේක්ෂා වනුයේ අහඹු තත්වයන් තුළ බොහෝ ප්ලේස් දැකිය හැකිද යන්න පෙන්වයිද යන්න පෙන්වයි. ඔබට මෙම දත්ත සකසන ලද ක්රියාවලි මකා දැමිය නොහැකි නම්, ඔබේ එකම පුනර්ජනනය නැවත ආරම්භ කිරීම විය හැකිය.

Program exec (2) අසමත් වන්නේ නම් (උදා. ක්රමලේඛය නොමැති විටදී) ක්රියාකරනු නොලැබුවහොත්, වැඩසටහන ක්රියාත්මක වූවාක් මෙන් ඊළඟට අන්තර්ක්රියා හෝ අපේක්ෂිත විධානය මඟින් දෝශ පණිවිඩයක් නැවත ලබා දෙනු ඇත. මෙම හැසිරීම උල්පත ක්රියාත්මක කිරීම ස්වාභාවික ප්රතිවිපාකයකි. අභ්යන්තරව, උගුරේ ගලා බසිනු ඇත. ඉන් පසු ඇතිවූ ක්රියාවලිය , මුල් අපේක්ෂා ක්රියාවලිය සමඟ සන්නිවේදනය කිරීමට ක්රමයක් නැත, ස්පාඤ්ඤය හරහා සංනිෙව්දනය කිරීමෙන් හැර.

-open ධජය ඊළග තර්කය ටීඑල් ගොනුව හඳුනාගැනීමේ ක්රමය ලෙස අර්ථ දැක්විය හැක (උදා. ආපසු විවෘත කරනු ලැබේ). එවිට උලාකාර හැඩය භාවිතා කළ හැකිය. (ගොනු හඳුනාගැනීමේ අංකය තවදුරටත් භාවිතා කළ නොහැකිය.) මෙය අමු ද්රව්ය, ලිපිගොනු සහ නළ මාර්ග ආදිය සමඟ pty භාවිතා නොකෙරේ. කිසිවක් අදාල ක්රියාවලියක් නොමැති බව පෙන්වීමට 0 නැවත ලබා දෙනු ලැබේ. උත්පාදන ක්රියාවලියට සම්බන්ධවීම වසා දමන විට, Tcl ගොනුවේ හඳුනාගැනීමේ වේගය ද වේ. - ලෙවෝපොන්ගේ ධජය සමාන වන්නේ - හැරෙන්නට හැරීමයි - පහත දැක්වෙන අක්ෂර වින්යාස පුවරුව වසා තිබියදී පවා ගොනු හඳුනා ගැනීමේ අංකය විවෘතව තැබිය හැක.

හිස් ධජය මඟින් pty විවෘත කළ හැකි නමුත් ක්රියාවලියක් නොපවතී. කිසිවක් අදාල ක්රියාවලියක් නොමැති බව පෙන්වීමට 0 නැවත ලබා දෙනු ලැබේ. Spawn_id සුපුරුදු පරිදි සකසා ඇත.

විචල්යය spawn_out (slave, fd) pty කොම්පැණියට අනුරූප වන ගොනුව හඳුනා ගැනේ. "Close -slave" භාවිතා කිරීමෙන් එය වසා දැමිය හැක.

මෙම ආවරණ ධජය යනු උච්ච ක්රියාවලියේදී නොසලකා හරින සංඥාවකි. එසේ නොමැතිනම්, සංඥාවල පෙරනිමි හැසිරීම ලැබෙනු ඇත. සෑම සංඥාවක්ම වෙනම ධජයක් අවශ්ය වන බැව හැර වෙනම සංඥාවන්ට උචිත ක්රමයක් ලෙස සංඥා ලෙස නම් කර ඇත.

පට්ටම් මට්ටම
පහත දැක්වෙන ප්රකාශයන් ක්රියාත්මක කිරීමට පෙර මුද්රණය කිරීමට හේතු වේ. (Tcl's trace විධානයන් විචල්යයන් වේ.) මට්ටම් පෙන්වා දී ඇති ඇමතුම් අඩුක්කසයට කොපමණ දුර දක්වයිද යන්න පෙන්නුම් කරයි. උදාහරණයක් ලෙස, පහත සඳහන් විධානය මඟින් ඇමතුම්වල පළමු මට්ටම් 4 ක් සෙවීමේදී අපේක්ෂා කරයි.

අපේක්ෂා -c "පේස්ට් 4" script.exp

තොරතුරු - ධජය ලබා දී ඇති වඩාත්ම මෑත නොවන තොරතුරු නොවන තර්ක පිළිබඳ විස්තරයක් නැවත ලබා ගැනීමට හේතු වේ.

ස්ටි තර්ක
බාහිර විධාන විධාන වලට සමාන ආකාරයේ ආකාරයන් වෙනස් වේ.

පෙරනිමියෙන් පාලක ටර්මිනාවට පිවිසිය හැක. වෙනත් පර්යන්තවලට ප්රවේශ වීමෙන් ප්රවේශ විය හැක්කේ "status සඳහා ඉල්ලීම් ලෙස එය විධානයක ප්රතිඵලයක් ලෙස නැවත ලබා දෙනු ලැබේ.ඒවාට තත්වයක් ඉල්ලා නොමැති අතර පාලක ටර්මිනලය ප්රවේශ වන්නේ නම්, අමු සහ echo ගුණාංගවල පූර්ව තත්වයන් පසුව ආපසු ලබා ගත හැකි ආකෘති පත්රයක් මගින් ආපසු ලබා ගත හැක. විධානය භාවිතා කරයි.

නිදසුනක් ලෙස අමුත්තන් හෝ තර්කනය කර ඇති තර්ක මඟින් ටර්මිනලය අමු ප්රකාරයට යවයි . තර්ක හෝ ඊයම් පිසින ලද පිඟන් මැටි පිසින ලද ප්රකාරයට ය. තර්ක කිරීම් echo සහ -echo ටර්මිනලය echo සහ noecho මාතයේ පිළිවෙලට පිළිවෙලින් පිළිවෙලින්.

පහත දැක්වෙන උදාහරණය උදාහරණයක් ලෙස තාවකාලිකව අක්රීය කර ඇති ආකාරය පිළිබිඹු කරයි. මෙය වෙනත් ආකාරයකින් භාවිතා කළ හැකිය. ඒවා ස්වයංක්රියව අක්ෂර වින්යාසයන් තුළට ඇතුල් කිරීම සඳහා රහස්පදයන් මඟහැරීම. (පහත දැක්වෙන උපකරණය යටතේ තවදුරටත් සාකච්ඡා කරන්න.)

stty -echo send_user "මුරපදය:" expect_user -re "(. *) \ n" මුරපදය $ expect_out (1, string) set echo

පද්ධතිය තර්ක කරයි
ආදාන ලෙස (1) ආදාන ලෙස ආදානය කරයි, එය ටර්මිනාවක් ලෙස ටයිප් කළ පරිදි මෙන් ටයිප් කර ඇත. ශෙලය අවසන් වන තෙක් බලා සිටීම අපේක්ෂා කරයි. Shce වෙතින් ලැබෙන තත්වය ක්රියා කරනු ලබන්නේ exec විසින් ආපසු පැමිණීමේ තත්වය පාලනය කරයි.

ක්රමලේඛනය ස්ටින්ඩින් හා ස්ටවුට් වෙත යොමු කරනු ලබන exec ට වෙනස් වේ, පද්ධතිය නොකෙරේ. එබැවින්, / dev / tty වෙත කෙලින්ම කතා කළ හැකි වැඩසටහන් භාවිතා කිරීමට හැකි වේ. එම හේතුව නිසා පද්ධතියේ ප්රතිඵල ලොගයේ සටහන් කර නොමැත.

කාලෝචිත [තර්ක]
කාලානුරූපව පැමිණෙයි. කිසිදු තර්කයක් නොමැතිව, යුගයේ සිට තත්පර ගණනක් ආපසු ලබා ඇත.

-format ධජය නැවත ලබා දෙන string එකක් හඳුන්වා දෙයි, නමුත්, strftime සඳහා POSIX රීති වලට අනුව සාදන ලද ආදේශයන් සමඟ. උදාහරණයක් ලෙස% a කෙටි දින සතියක් වෙනුවට (සති) වේ. තවත් අය:

% කෙටි කාලීන සතියේ නම% සම්පූර්ණ සම්පූර්ණ සතියේ නම% b කෙටි කාලීන නම% B පූර්ණ මාස නම% c දිනය ලෙස: ඔක්තෝබර් 6 11:45:56 1993% d දින (01-31% H (00 - 23)% I පැය (01-12)% j දින (001-366)% m මාසය (01-12)% M මිනිත්තු (00-59) % u දින (1-7, සඳුදා සතියේ පළමු දිනය)% U සතිය (00-53, පළමු ඉරිදාව සතියේ පළමු දිනය)% V සතිය (01-53, ISO 8601 ශෛලිය)% w දින (0- 6)% W සතිය (00-53, පළමු සඳුදා සතියේ පළමුවැනි දින 1)% x දිනය: වේ.ස ඔක්තෝ 6 1993% X කාලය ලෙස: 23:59:59% y වර්ෂය (00-99) % Y අවුරුද්දක් ඇතුලත: 1993% Z වේලාකලාපය (නැතහොත් නිර්ණය කළ නොහැකි නම් කිසිවක් නැත) %% සියයට අටක ලකුණක්

වෙනත්% පිරිවිතරයන් නිර්වචනය නොකෙරේ. අනෙක් චරිතයන් නොකැළුණු මාර්ගයෙන් සම්මත වේ. C භාෂාවට පමණක් ආධාර සපයයි.

තත්පර ගණනක් තත්පර ගණනක් හඳුන්වා දෙන්නේ ආකෘතියකට අනුව ප්රභවය ලෙස භාවිතා කල යුගයක් ලෙසිනි. එසේ නොමැතිනම් වර්තමාන කාලය භාවිතා වේ.

-gmt ධජය GMT කාල කලාපය භාවිතා කිරීම සඳහා කාලානුරූපී ප්රතිදානය. කිසිදු ධජයක් නොමැතිව, දේශීය වේලා කලාපය භාවිතා වේ.

උගුල [[විධානය] සංඥා]
මඟින් නිකුත් කරන ලද සංඥා ඕනෑම අනාගත රිසිට්පතක් මත ලබාදෙන විධානය ක්රියාත්මක කිරීමට හේතු වේ. මෙම විධානය ගෝලීය විෂයපථය තුළ ක්රියාත්මක වේ. ආඥාව නොමැති නම්, සංඥා ක්රියාව ආපසු ලබා දෙනු ලැබේ. විධානය SIG_IGN යන string නම්, සංඥා නොසලකා හරිනු ලැබේ. විධානය SIG_DFL ශ්රේණියක් නම්, සංඥාවන් පද්ධතියේ පෙරනිමියට හේතු වේ. සංඥා යනු එක් සංඥාවක් හෝ සංඥා ලැයිස්තුවකි. සංඥා (3) අනුව සංඥා සංඛ්යා හෝ සංකේතාත්මකව නිශ්චිතව දැක්විය හැක. "SIG" උපසර්ගය අතුගා දැමිය හැක.

කිසිදු තර්කයක් නොමැති (හෝ පරාමිතිය - අංකය), උගුලේ ක්රියාත්මක වන උගුලේ සංඥා සංඥා අංකය නැවත ලබා දෙයි.

-code ධජය ආරම්භක කේතය ආරම්භ වූ විටදී Tcl නැවත ආරම්භ කිරීමට කුමන හෝ කේතයක් භාවිතයෙන් Command විධානයේ ප්රතිලාභ කේත භාවිතා කරයි.

මෙම -interp ධජය උගුල ප්රකාශයට පත් කරන ලද කාලයට වඩා විධානය ක්රියාත්මක වූ අවස්ථාවේ දී ක්රියාකාරීව භාෂණ රිවේතෙයා ක්රියාකාරීව භාවිතා කරනු ලැබේ.

-name ධජය trap විධානය මඟින් ක්රියාත්මක වන උගුලාවේ සංඥාව නැවත ලබා දෙයි.

-max ධජය උගුලට හසු වන විශාලතම සංඥා අංකය ආපසු ලබා ගත හැක.

උදාහරණයක් ලෙස, "trap {send_user" Ouch! "} SIGINT" විධානය මඟින් "Ouch!" මුද්රණය කරනු ඇත. භාවිතා කරන්නා සෑම විටම ^ C.

සුපුරුදු පරිදි, SIGINT (සාමාන්යයෙන් C ^ යතුර එබීමෙන් උත්පාදනය කල හැකි) සහ SIGTERM නිසා පිටවීමට අපේක්ෂා කරයි. පහත දැක්වෙන උගුලට හේතුව මෙයයි, ආරම්භය බලාපොරොත්තු වන විට පෙරනිමියෙන්ම සාදන ලද.

උගුලෙන් පිටවීම {SIGINT SIGTERM}

ඔබ ධජය ආරම්භ කිරීම සඳහා -D ධජය භාවිතා කරන්නේ නම්, SIGINT නැවත නැවත අර්ථ දැක්වෙනු ඇත. පහත සඳහන් උගුලට හේතුව මෙයයි:

උගුලක් {exp_debug 1} SIGINT

පාරිසරික විචල්යය EXPECT_DEBUG_INIT නව උගු විධානයකට යොමු කිරීම මගින් වින්යාසකාරක උගුල වෙනස් කළ හැකිය.

සැබැවින්ම, ඔබ දෙදෙනාම ඔබේ අක්ෂර වින්යාස විධානයන් එකතු කිරීම මගින් ඔබට දෙවරක් පරදා හැක. විශේෂයෙන්, ඔබ ඔබේ "උගුලේ පිටවීම SIGINT" තිබේ නම්, මෙය වින්යාසකාරි උගුල අභිබවා යනවා. පරිශීලකයන් සියල්ලම වින්යාස කරන්නට ඉඩ නොදී සිටීමට අවශ්ය නම් මෙය ප්රයෝජනවත් වේ.

ඔබට SIGINT මත ඔබේම උගුලක් නිර්වචනය කිරීමට අවශ්ය නම්, එය ක්රියාත්මක වන විටදී වින්යාසකාරයාට උගුලට හසුකර ගැනීම සඳහා:

{{[exp_debug]} {{trap mystuff SIGINT}

විකල්පයක් ලෙස, ඔබ වෙනත් සංඥාවක් භාවිතා කරමින් වින්යාසකාරයාට උගුලට හසු කර ගත හැකිය.

මෙම උගුල SIGALRM සඳහා වන ක්රියාව පෙරළීමට ඉඩ නොදෙනු ඇත. විසන්ධි කිරීමේ ආඥාව SIGALRM සිට SIG_IGN දක්වා තබයි (නොතකා). පසු විපරම් විධානයන් තුළ ඔබ එය අක්රීය කළ හැකි වන පරිදි මෙය නැවත කල හැක.

වැඩි විස්තර සඳහා සංඥා (3) බලන්න.

බලා සිටින්න [තර්ක කරන්න]
(හෝ කිසිවක් නම් නොකෙරේ නම් වර්තමාන ක්රියාවලිය අවසන් වන තුරු) ප්රමාදයි.

සාමාන්යයෙන් සිගරට් හතරක ලැයිස්තුවක් වෙත නැවත පැමිණීමට සිදු වේ. පළමු නිඛිලය වන්නේ බලා සිටි ක්රියාදාමය පිළිබඳ පොරොන්දුවයි. දෙවන පූර්ණ සංඛ්යා යනු අනුරූප විචල්යය වේ. මෙහෙයුම් පද්ධතියේ දෝශයක් හටගන්නේ නම්, තෙවන පූර්ණ සංඛ්යා -1 වේ. තුන්වන පූර්ණ සංඛ්යා 0 නම්, සිව්වන පූර්ණ සංඛ්යා යනු උත්පාදන ක්රියාවලියෙන් ආපසු ලබා දෙන තත්වයකි. තෙවන පූර්ණ සංඛ්යා -1 නම්, සිව්වන පරාමිතිය වන්නේ මෙහෙයුම් පද්ධතිය මඟින් errno විසින් සැකසූ අගයයි. ගෝලීය විචල්ය ErrorCode ද සකසා ඇත.

අමතර අංගයන් නැවත පැමිණීමේ අගය අවසානයේදී බලා සිටිය හැක . වෛකල්පිත පස්වන මූලද්රව්යය තොරතුරු කාණ්ඩයක් හඳුනා ගනී. වර්තමානයේ මෙම මූලද්රව්ය සඳහා ඇති එකම අගය වන්නේ CHILDKILLED වන අතර ඊළඟ අගය දෙක C-style සංඥා නාමය හා කෙටි පාඨමය විස්තරයකි.

-i ධජය named spawn_id වලට අනුකූලව ක්රියාවලිය ප්රකාශයට පත් කරයි ( ක්රියා ක්රියාවලියේ අංකය නොවේ). SIGCHLD හැසිරවුම්කරුවෙකු තුළ, spawn id-1 භාවිතා කරමින් ඕනෑම උත්පේ්රර ක්රියාවලියක් බලා සිටීමට හැකි වේ.

- නොකියවූ ධජය සාර්ථක වේලාවක් ඇති බවට වහාම පැමිණීමට බලා සිටීමට සිදු වේ. ක්රියාවලිය පිටත් වන විට (පසු), එය නිශ්චිතව රැඳී සිටීමේ අවශ්යතාවය නොමැතිව ස්වයංක්රීයව අතුරුදහන් වනු ඇත.

"-i-1" තර්ක යොදා ගනිමින් ඉන්ධන ක්රියාවලියක් සඳහා බලා සිටීමටද හැක . මතුවූ ක්රියාවලිය සමඟ භාවිතා කිරීම මෙන්, මෙම විධානය ඕනෑම වේලාවක ක්රියාත්මක කළ හැකිය. කුමන ක්රියාවලියක් නෙලා ගන්නේද යන්න පාලනය කිරීමක් නැත. කෙසේ වෙතත්, ආපසු ලැබෙන අගය ක්රියාවලියේ අංකය සඳහා පරීක්ෂා කළ හැකිය.

පුස්තකාල

අපේක්ෂිත පිටපත් සඳහා අපේක්ෂිත පුස්තකාල දෙක ගැන ස්වයංක්රීයවම දැන සිටිමු. ඒවා විචල්යයන් exp_library සහ exp_exec_library යනුවෙන් නම් කරන ලද බහලුම් මගින් අර්ථ දක්වා ඇත. මේ දෙකම වෙනත් ස්ක්රිප්ට් භාවිතා කළ හැකි උපයෝගීතා ගොනු අඩංගු කිරීමට අදහස් කෙරේ.

විස්තීර්ණ-ස්වාධීන ගොනු අඩංගු වේ. exp_exec_library විසින් ගෘහ නිර්මාණ-මත පදනම් වූ ගොනු අඩංගු වේ. ඔබේ පද්ධතිය මත පදනම්ව, බහලුම් දෙක මුළුමනින්ම හිස් විය හැක. $ Exp_exec_library / cat-buffers ගොනුවේ පැවැත්ම විස්තර කර ඇත්තේ ඔබේ / bin / cat පෙරනිමි ආකාරයට බෆර් වේ.

ප්රින්ටින්-මුදණය

ලස්සන මුද්රණය සඳහා Expect scripts සඳහා අවිනිශ්චිත නිර්වචනයක් පවතී. Expect බෙදාහැරීම සමඟ සපයන ලද විචල්ය අර්ථ දැක්වීම නිවැරදිව ස්ථාපනය කර ඇතිවිට එය ඔබට එය භාවිතා කළ හැකිය:

ව්යාකුල ගොනුව

උදාහරණ

මනුෂ්ය පිටුව විස්තර කරන පරිදි සියල්ල එකට දැමිය යුතු ආකාරය බොහෝ දෙනෙකුට නොපෙනේ. මම ඔබට කියවීමට හා අපේක්ෂා බෙදාහැරීමේ ආදර්ශ කථාංගයේ නිදසුන් උත්සාහ කරන්න. සමහර ඒවා සැබෑ වැඩසටහන්. තවත් සමහර අය තාක්ෂණික ක්රම පිළිබඳව නිදර්ශනය කරති. ඇත්ත වශයෙන්ම, යුවළක් ඉක්මන් හෑංකි. මෙම වැඩසටහන් සඳහා INSTALL ගොනුවක් ඉක්මන් සමාලෝචනය කර ඇත.

අපේක්ෂිත පත්රිකා (ද බලන්න බලන්න) ප්රයෝජනවත් වේ. සමහර පුවත්පත් Expect හි පෙර අනුවාද වලට අනුරූප වන සමහර යෙදුම් භාවිතා කරන අතරතුර, මෙම අනුපිළිවෙල තවමත් වලංගු වන අතර මෙම මිනිසාගේ පිටුවට වඩා බොහෝ විස්තරයක් යවනු ලැබේ.

සීවීට්ස්

දිගුකිසි අපේක්ෂාවන්ගේ විධාන නාමයන් සමඟ ගැටුම් ඇතිවිය හැක. නිදසුනක් ලෙස, ටීක් විසින් සම්පූර්ණයෙන්ම වෙනස් අරමුණක් සඳහා අර්ථ දක්වා ඇත. මෙම හේතුව නිසා, Expect විධාන බොහෝ විට "exp_XXXX" ලෙසද ලබා ගත හැකිය. විධාන සහ විචල්යයන් "exp", "inter", "spawn" සහ "timeout" යනුවෙන් අන්වර්ථයන් නොමැත. පරිසරයන් අතර මෙම අනුකූලතාව අවශ්ය නම් දීර්ඝ විධාන පෙල භාවිතා කරන්න.

අපේක්ෂාව සැලකිය යුතු ලෙස ලිබරල් දෘෂ්ටියක් ගනී. විශේෂයෙන්, අපේක්ෂක වැඩසටහනට විශේෂිත වූ විධාන මගින් කියවන විචල්යයන් දේශීය විෂය පථයකින් මුලින්ම සොයා ගත හැකි අතර, එය සොයාගත නොහැකි නම්, ගෝලීය විෂය පථය තුළ. නිදසුනක් ලෙස, මෙය ඔබ අපේක්ෂා කරන සෑම ක්රියාවක් තුලම "ගෝලීය කාල සීමාව" තැබීම අවශ්ය වේ. අනෙක් අතට ලිඛිත විචල්යයන් සෑම විටම ප්රාදේශීය විෂය පථයට අයත් වේ ("ගෝලීය" විධානයක් නිකුත් කර නැත්නම්). මෙම හේතුව නිසා ඇතිවන වඩාත් පොදු ගැටළුව වන්නේ ක්රියාවලියක් තුළ ක්රියාත්මක වන විටයි. ක්රියාවලියෙන් පිටත, spawn_id තවදුරටත් පවතින්නේ නැත, එබැවින් නිකුතුව ක්රියාවලිය නිකම්ම ප්රවේශය නිසා ප්රවේශ වීමෙන් තවදුරටත් පිවිසිය නොහැක. එවැනි ක්රියාවලියකට "ගෝලීය spawn_id" එකතු කරන්න.

ඔබට බහුසම්බන්ධතා හැකියාව සක්රිය කළ නොහැකි නම් (ඔබේ පද්ධතිය මඟින් (BSD *. * *), විමසුම (SVR> 2) හෝ ඊට සමාන යමක් නොලැබේ), එක් වරක් එක් ක්රියාවලියක් පාලනය කිරීමට හැකි වනු ඇත. මෙම අවස්ථාවෙහිදී, spawn_id සැකසීමට උත්සහ නොකරන්න , තවද ක්රියාවලිය ක්රියාත්මක වන විට exec හරහා ක්රියාවලි ක්රියාවලිය සිදු නොකළ යුතුය. එපමණක් නොව, ඔබ එක් වරක් විවිධාකාර ක්රියාවලීන්ගෙන් (එක පරිශීලකයා ඇතුළුව) අපේක්ෂා කිරීමට නොහැකි වනු ඇත.

අක්ෂර පරාමිතීන් අක්ෂර වින්යාසය මත විශාල බලපෑමක් ඇති විය හැකිය. උදාහරණයක් ලෙස, තිර රචනයක් රෙකෝඩනය දැක්වීම සඳහා ලියා තිබේ නම්, ප්රතිනාදකම නිවා දමනු ලබන්නේ නම් එය වැරදියි. මෙම හේතුව නිසා, බලවේග පරිනාමිත පරාමිති පරාමිතීන් පෙරනිමියෙන් අනුමාන කරන්න. අවාසනාවකට මෙන්, මෙය වෙනත් වැඩසටහන් සඳහා දේවල් අප්රසන්න කර ගත හැකිය. නිදසුනක් ලෙස, ඊයම් ෂෙල් "සාමාන්ය" සිතියම් වෙනස් කිරීමට අවශ්ය වන්නේ: නව පේළියේ කාපට්-ආපසු ලැබීමේ පේලි වෙනුවට නව පේළියේ සිතියම්ගත කිරීම සහ ප්රතිවර්තනය කිරීම අක්රීය කර ඇත. ආදාන රේඛාව සංස්කරණය කිරීම සඳහා Emacs භාවිතා කිරීමට මෙය ඉඩ දෙයි. අවාසනාවට, අපේක්ෂා කළ නොහැකිය.

ඔබට ටර්මිනල් පරාමිතීන්ගේ පෙරනිමි සැකසුම අභිබවා යෑමට අපේක්ෂා කළ නොහැකි නමුත් එවැනි පරිසරයන් සඳහා පිටපත් ලියන විට ඔබ ප්රවේශම් විය යුතුය. Emac හි දී, අනුලකුණු සහ අවසාන පේජිං වැනි දේවල් මත පදනම්ව වැළකී සිටින්න.

එක් ලැයිස්තුවක් ( අපේක්ෂිත විචල්යයන් සහ අන්තර්ක්රියාකාරිත්වයට ) තර්ක ඉදිරිපත් කරන ලද ආඥාවන් එම ලැයිස්තු ඇත්ත වශයෙන්ම එක් තර්කයක් හෝ බොහෝ දෙනෙක් තීරණය කිරීම සඳහා වහල් ක්රමයක් භාවිතා කරයි. ලැයිස්තුගත කිරීම සැබැවින්ම ලැයිස්තුගත කර ඇත්තේ එක් තර්කයක් පමණක් වන අතර, ඒවා අතර නොගැලපෙන අකුරු සමඟ \ n \ n \ n \ මෙය සෑහෙන තරම් නොසැළී පෙනෙන නමුත්, තනි තර්කයක් ලෙස හසුරුවන තනි තර්කයක් බල කිරීම සඳහා "-nobrace" භාවිතා කළ හැක. මෙය යන්ත්රගතව ඇති සැකසුම් කේතය සමඟ සැසඳිය හැකි ය. ඒ හා සමානව, -බේදන බහු ක්රියාවන් / ක්රියාවන් ලෙස හැසිරවීමට තනි තර්කයක් බල කරයි.

BUGS

"ලිංගික" වැඩසටහන ("Smart EXec" හෝ "Send-Expect" යනුවෙන් නම් කිරීමට) පෙළඹවීම සැබැවින්ම සංවේදී විය. එහෙත් හොඳ අර්ථයක් (හෝ සමහරවිට ප්යාරතානවාදය) පැවතුනේය.

සමහර පද්ධතිවලදී shell එකක් සෑදූ විට, එය TTY වෙත ප්රවේශ වීමට නොහැකි වුවද, කෙසේ හෝ ධාවනය වේ. මෙයින් අදහස් වන්නේ අපේක්ෂා නොකරන ලද පාලන තන්ත්රය ලබා ගැනීම සඳහා ඔබේ පද්ධතියට යාන්ත්රණයක් ඇත. කරුණාකර එය කුමක්දැයි සොයා බලන්න, මෙම තොරතුරු වෙත මා වෙත එවන්න.

Ultrix 4.1 (මෙහි අවම වශයෙන් නවතම අනුවාදයන් අඩුම තරමින් 1000000 ඉක්මවා යයි සලකයි) 0 ට සමාන වේ.

ඩිජිටල් UNIX 4.0A (සහ සමහර විට වෙනත් අනුවාද) ඔබ SIGCHLD හැසිරවීම නිර්ණය කළහොත් Ptys වෙන් කිරීම ප්රතික්ෂේප කරයි. වැඩි විස්තර සඳහා පිරිනැමෙන පිටුව බලන්න.

IRIX 6.0 විසින් pty අවසරයන් නිවැරදිව ක්රියා නොකරනු ඇත, වෙනත් කෙනෙකු විසින් කලින් භාවිතා කරන ලද pty එකක් ලබා ගැනීමට අපේක්ෂා කළහොත් එය අසමත් වේ. IRIX වෙත උත්ශ්රේණි කිරීම 6.1.

තෙවන (SunS 4.1.2 යටතේ පමණක් සත්යාපනය කර ඇති) ටෙම්ප්ලේට නොතිබුනේ නම් ටෙලන්ට් වේ. මෙය TERM හි නිර්වචනය නොකෙරෙන cron, cgi සහ cgi ස්ක්රිප්ට් යටතේ ඇති ගැටලුවක් වේ. මේ අනුව, ඔබ එය පැහැදිලිව ප්රකාශ කළ යුතුය - සාමාන්යයෙන් කවර කාරුණික නොවේ. එය නිකම්ම යමක් තැබිය යුතුය! බොහෝ අවස්ථා වලදී පහත දැක්වෙන පරිදි ප්රමාණවත් වේ.

env (TERM) vt100

Tip (BSDI BSD / OS 3.1 යටතේ පමණක් සත්යාපනය කර ඇත) SHELL සහ HOME ස්ථාපිත නොකළ හොත්. මෙම පාරිසරික විචල්යයන් නිර්වචනය නොවන cron ,, සහ cgi ස්ක්රිප්ට් යටතේ ගැටළුවක් වේ. මේ අනුව, ඔබ ඒවා පැහැදිලිව ප්රකාශ කළ යුතුය - සාමාන්යයෙන් කවර කාරුණික නොවේ. එය නිකම්ම යමක් තැබිය යුතුය! බොහෝ අවස්ථා වලදී පහත දැක්වෙන පරිදි ප්රමාණවත් වේ.

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

කර්තව්යයේ සමහර implementations නිර්මාණය කර ඇති අතර, කර්නලය මඟින් තත්පර 10 සිට 15 දක්වා තත්පරයට තත්පර 10 සිට 15 දක්වා නොකෙරෙන ප්රතිදානය අක්රිය කර ඇත. එබඳු වැඩසටහන් අපේක්ෂා කරන්න

ආරුක්කු දිනය නින්ද 20 අපේක්ෂා කරයි

අසාර්ථක වනු ඇත. මෙය වලකා ගැනීම සඳහා, අන්තර්ක්රියාකාරී නොවන වැඩසටහන් ක්රියාත්මක කිරීම වෙනුවට exec වෙනුවට. එවැනි තත්වයන් සිතිය හැකි නමුත්, ප්රායෝගිකව මෙම සැබෑ හැසිරීම හේතුවෙන් ඇත්ත වශයෙන්ම අන්තර් ක්රියාකාරී වැඩසටහනේ අවසාන ප්රතිදානය අහිමි වන තත්වයක් කිසි විටෙකත් මට නොතිබුණි.

අනෙක් අතට, ක්රේ UNICOS ptys ගොනු කියවීමේ ක්රියාවලිය වසා දැමේ වහාම ඕනෑම නොකියවූ ප්රතිදානය ඉවත දමනු ඇත. මම මේක ක්රේට වාර්තා කරලා තියෙනවා.

සමහර අවස්ථාවලදී විමසුමක් සහ ප්රතිචාරයක් අතරතුර ප්රමාදයක් අවශ්ය වේ. TTY අතුරුමුහුණතක් UART සැකසීම් හෝ ආරම්භක / නැවතුම් බට් සඳහා සොයමින් බෝඩ් අනුපාතවලට ගැලපෙන විට. සාමාන්යයෙන්, මේ සියල්ල අවශ්ය වන්නේ දෙවන හෝ දෙක සඳහා නිදා ගැනීමයි. දෘඪාංගය ආදාන ලබා ගැනීමට සූදානම් වන තෙක් වඩා ශක්තිමත්ම තාක්ෂණික ක්රමයකි. පහත දැක්වෙන උදාහරණයන් උපාය මාර්ග දෙකම භාවිතා කරයි:

"වේග 9600 \" යවන්නා; සැතපුම් 1 අපේක්ෂා කිරීම {timeout {send "\ r"; exp_continue} $ විමසුමක්}

trap -code ටීඑම්යේ සිදුවෙන චක්රය තුල නින්ද වැනි ඕනෑම විධානයක් සමඟ ක්රියා නොකරනු ඇත. ගැටළුව නම් අවස්ථාවක ලූපයේදී, ටීඑල් ආක්රමණික සිදුවීම් කළමණාකරුවන් වෙතින් ආපසු කේතය ඉවත් කරයි. උගුලේ සංකේතය තුළ ධජයක් පිහිටුවීම වසාදැමීමකි. ආඥාව ඉක්මණින් නෝට්ටුව පරීක්ෂා කරන්න (උදා: නින්ද).

Expect_background විධානය නොසලකා හරිනු -timeout තර්ක සහ සාමාන්යයෙන් කල් ඉකුත්වීමේ සංකල්පයක් නොමැත.

& # 34; EXPECT HINTS & # 34;

අපේක්ෂා නොකළ හැකි යමක් ගැන කරුණු කිහිපයක් තිබේ. මෙම කොටසෙන් කිහිපයක් යෝජනා සමග යෝජනා කිරීමට මෙම කොටස උත්සාහ කරයි.

පොදු අපේක්ෂිත ගැටලුවක් වන්නේ shell විමසුමක් හඳුනාගන්නේ කෙසේද යන්නයි. විවිධාකාර පුද්ගලයන් හා විවිධ ෂෙල්ස් විසින් මෙම වෙනස්කම් වෙනස් කර ඇති බැවින්, ප්රේරකව ස්වයංක්රීයව rlogin වේගයෙන් විමසීමෙන් තොරව අපහසු විය හැකිය. සාධාරණ සම්මුතියක් වන්නේ පරිශීලකයන් තම විමසුම (විශේෂයෙන් අවසානය) විස්තර කරන විධිමත් ප්රකාශනයක් ගබඩා කර තැබීමයි. පාරිසරික විචල්යය තුල EXPECT_PROMPT. පහත සඳහන් කේතය භාවිතා කළ හැක. EXPECT_PROMPT නොපවතියි නම්, කේතය නිවැරදිව ක්රියාත්මක කිරීමට හොඳ අවස්ථාවක් තිබේ.

"විමසුමක් සකසන්න" (% | # | \\ $) $ ";" # ප්රකෘති විමසුමක් උඩුගත කිරීම {set විමසුම $ env (EXPECT_PROMPT)} අපේක්ෂිත -re $ විමසුමක්

ඔබ අපේක්ෂා කරන ඕනෑම දෙයක් අවසානය ඇතුළත් කළ හැකි රටා ලිවීමට ඔබට දිරිගන්වන්නෙමි. මෙය සමස්තයක්ම දකින්නට පෙර ප්රශ්නයකට පිළිතුරු දීමට ඇති හැකියාව වළක්වාලයි. මීට අමතරව, ඔබ මුලුමනින් ම දකින්නට පෙර ප්රශ්නවලට පිළිතුරු දීමට ඔබට හැකි වනු ඇත, ඔබ මුලින්ම පිළිතුරු දෙනවා නම්, ඔබගේ පිළිතුර ප්රශ්නයේ මැද නැවත නැවත දිස්වනු ඇත. වෙනත් වචනවලින් කිවහොත්, ප්රතිඵලයක් වශයෙන් සංවාද නිවැරදි වනු ඇත නමුත් පොරොත්තුව දිස්වේ.

බොහෝ විමසුමක් අවසානයේ අවකාශයේ අක්ෂර ඇතුළත් වේ. උදාහරණයක් ලෙස, ftp වෙතින් ලැබෙන විමසුමක් වන්නේ 'f', 't', 'p', '>' සහ. මෙම විමසුමට ගැලපෙන පරිදි, මෙම එක් එක් අක්ෂර සඳහා ඔබ ගිණුම් කළ යුතුය. හිස්ව තැබීම නොකල යුතු පොදු වැරැද්දකි. පැහැදිළිවම හිස්ව තබන්න.

ඔබ X * ආකෘතියේ ආකෘතියක් භාවිතා කරන්නේ නම්, * X අවසානයේ සිට ලැබෙන අවසන් ප්රතිඵලය වෙත ලැබෙන අවසන් ප්රතිඵලය හා ඊට අදාල අවසන් ප්රතිඵලය වෙත ලැබෙනු ඇත. මෙය ප්රකට වන නමුත්, "අවසාන වශයෙන් ලැබුණු දේ" යන වචනයේ තරමක අවුල් සහගත විය හැක. පරිගණකයේ වේගය සහ කර්නලයේ සහ උපාංග ධාවක මඟින් I / O සැකසුම වෙනස් වේ.

විශේෂයෙන් ම, බොහෝ යථාර්තයේ දී බොහෝ වැඩසටහන් එකවර රේඛාවක් නිපදවන විට, විශාල වශයෙන් කුට්ටි (පරමාණුක) වෙත පැමිණීමේ වැඩසටහන ප්රතිනිර්මාණය කිරීමට මිනිසුන් නැඹුරු වෙති. මෙම සිද්ධිය අනුමාන කළහොත්, කලින් ඡේදයේ රටාවේ * අළුත් රේඛාවේ අවසානයට සමාන වනු ඇත. නමුත් එය වැඩි වන බවක් පෙනෙන්නට තිබුණත්, ලැබී ඇති සියළු ප්රතිඵලය වූ තරඟය වේ.

ඔබගේ රටාව විශේෂයෙන් එය ගිණුම්ගත කර ඇත්නම්, වැඩිදුර නිමැවුම් පැමිණෙන බව දැන ගැනීමට කිසිදු ක්රමයක් නැත.

රේඛීය-දිශානති කළ බෆරයට අනුව පවා එය අඥාන විය හැකිය. වැඩසටහන් ක්රියාත්මක කිරීම පමණක් කලාතුරකින් සිදු කරන්නේ බෆරයේ වර්ගය පිළිබඳව පොරොන්දු ලබා දීම පමණක් නොව, අහඹු ස්ථානවල රේඛා රේඛාවන් බිඳී යාම නිසා පද්ධතියේ විස්ථාපනය මඟින් නිමැවුම් රේඛා බිඳිය හැක. මේ අනුව, ඔබට ආදර්ශය ලියන විට අන්තිම අකුරු අක්ෂර කිහිපයක් ප්රකාශ කළ හැකි නම්, එසේ කිරීම ඥානවන්ත ය.

ඔබ වැඩසටහනක අවසන් ප්රතිඵලයෙහි රටාවක් බලා සිටින අතර, වැඩසටහන වෙනුවට වෙනත් යමක් නිකුත් කරයි නම්, ඔබ එය කල් ඉකුත්වන ප්රධාන පදය සමඟ හඳුනා ගැනීමට නොහැකි වනු ඇත. හේතුව එය අපේක්ෂා නොකෙරේ නම්, ඒ වෙනුවට එය eof දර්ශකයක් ලබා දෙනු ඇත. ඒ වෙනුවට භාවිතා කරන්න. ඊටත් වඩා හොඳ භාවිතා කරන්න. ඒ අනුව එම රේඛාව වටා ගමන් කළහොත් ඔබට රේඛාව සංස්කරණය කිරීමට සිදු නොවේ.

නිව්ස්ලයින් සාමාන්යයෙන් වාහක ආපසු පැමිණෙන අතර, ටර්මිනර් ධාවක මඟින් නිපදවන විට රේඛීය අනුපිළිවෙලවල් බවට පරිවර්තනය වේ. එබැවින්, ඔබට පේලි දෙකක් අනුපිළිවෙළට ගැලපෙන රටාවක් අවශ්ය නම් printf ("foo \ nbar") වෙතින්, ඔබ "foo \ r \ nbar" රටාව භාවිතා කළ යුතුය.

සමාන පරිවර්තකය භාවිතා කරන්නෙකුගෙන් කියවීමෙන් අපේක්ෂා කරන විට අපේක්ෂා කරන්නා හරහා. මෙම අවස්ථාවේදී, ඔබ නැවත පැමිණෙන විට, එය නව පේළියකට පරිවර්තනය කරනු ලැබේ. එවිට අපේක්ෂා කරන්නේ නම්, ටෙලි නාට්යය ලෙස එහි අග්රය වෙත ප්රවේශය ලබාදෙන වැඩසටහනක් වෙතොත්, වැඩසටහන නැවත පැමිණීම අපේක්ෂා කරන බැවින්, එය ගැටලුවක් වනු ඇත. (ඇතැම් වැඩසටහන් සැබවින්ම සමාව දෙනවා නම් ඒවා ස්වයංක්රීයව නව පේළියන් ස්වයංක්රීයව පරිවර්ථනය කරනු ඇත, නමුත් බොහෝ ඒවා නොවේ.) අවාසනාවකට, ක්රමලේඛයක් එහි යෙදුම අමු ආකාරයේ බවට පත් කරන බව සොයා ගැනීමට ක්රමයක් නැත.

ආපසු පැමිණීම සමග පරණ පේළි වෙනුවට ආදේශ කිරීම වෙනුවට විසඳුම වන්නේ "stty raw" විධානය භාවිතා කිරීමයි. එය පරිවර්ථනය නවත්වනු ඇත. කෙසේ වෙතත්, මෙයින් අදහස් වන්නේ ඔබ තවදුරටත් පිසින ලද රේඛා-සංස්කරණ විශේෂාංග ලබා නොගන්නා බවයි.

මෙම සම්බන්ධය නිසියාකාරව ඔබගේ මුහුණත raw mode වෙතට සකසනු ඇත, එවිට මෙම ගැටළුව මතු නොවනු ඇත.

අපේක්ෂිත පිටපත් වල මුරපද (හෝ වෙනත් පුද්ගලික තොරතුරු) ගබඩා කිරීම බොහෝ විට ප්රයෝජනවත් වේ. පරිගණකය තුළ ගබඩා කර ඇති ඕනෑම කෙනෙකුට ඕනෑම කෙනෙකුට ප්රවේශ වීමට ඉඩ ඇත. මේ අනුව, පිටපත් වලින් මුරපද සඳහා අන්තර්ක්රියාකාරීව යොමු කිරීම වක්රව යැවීමෙන් වඩා බුද්ධිමත් අදහසකි. කෙසේවෙතත්, ඇතැම් අවස්ථාවලදී එම්බාම් කිරීම එකම අවස්ථාවකි.

අවාසනාවකට මෙන්, UNIX ගොනු පද්ධතියට ක්රියාත්මක වන නමුත් පිටපත් නොකෙරෙන පිටපත් නිර්මාණය කිරීමේ ඍජු ක්රමයක් නැත. සිග්නේචර් ස්ක්රිප්ට් සඳහා සහාය දක්වන පද්ධති, වක්රව පහත පරිදි මෙසේ සිහිය විය හැක:

සුපුරුදු රචනය (රහස් දත්ත අඩංගු) සාදන්න. එහි අවසරයන් 750 (-rwxr-x ---) සහ විශ්වාසදායී කණ්ඩායමක් සතු වේ, එනම්, කියවීමට ඉඩ දෙන කණ්ඩායමක්. අවශ්ය නම්, මේ සඳහා නව කණ්ඩායමක් සාදන්න. මීලඟට, පෙර මෙන් ම එම කණ්ඩායමට අයත් 2751 (-rwxr-s-x) අවසර ලබා දී ඇති / bin / sh script එකක් නිර්මාණය කරන්න.

ප්රතිඵලය වන්නේ ඕනෑම අයෙකු විසින් (සහ කියවීමට) හැකි අක්ෂරයකි. එය ආයාචනය කරන විට, එය Expect පිටපත ක්රියාත්මක කරයි.

& # 34; ද බලන්න & # 34;

Tcl (3), libexpect (3)
" ඩොක් ලිබ්ස් " , 602 දී, ISBN 1-56592-090-2, ඕ'ආර්ලි සහ ඇෙසෝෂිෙය්ට්ස්, 1995 ෙපොපර්ටි ඇප්ලිකේෂන් වැඩසටහන සඳහා ස්වයංක්රීය වැඩසටහන් ස්වයංකරණය සඳහා වූ ටැබ්-පාදක ෙකොටගත් උපාංගයකි.
"අපේක්ෂා: අන්තර්ක්රියාකාරීත්වයේ අද්විතීය ගැළපීම් වලක්වා ගැනීම" ඩොන් ලිබ්ස් විසින් 1990 වර්ෂයේ ජුනි මස 15 සිට 15 දක්වා කැලිෆෝර්නියාවේ ඇන්හයිම්හී, ඇමරිකා එක්සත් ජනපදයේ ඇමරිකාසීන් සම්මන්ත්රණයේදී පවත්වන ලද සම්මන්ත්රණය.
1990 ඔක්තෝබර් 17-19, කොලරාඩෝහි කොලරාඩෝ ස්ප්රින්ග්ස් හි, එක්සත් ජනපදයේ විශාල ස්ථාපන පද්ධති පරිපාලන සම්මේලන මාලාවේ ඩොන් ලිබ්ස් විසින් "පද්ධති පරිපාලන කර්තව්ය ස්වයංක්රීය කිරීමට අපේක්ෂා කරමි ".
ශීත ඍතු 1990 දී ඇමරිකාසීන් සම්මේලනය, වොෂිංටන් ඩී.සී., ජනවාරි 22-26, 1990.ඉන් "ICH: Tcl: ආනුභවනය කළ හැකි විධාන භාෂාව" ජෝන් ඕරස්හූට්. මම ඩොන් ලිබ්ස්, පරිගණක පද්ධති , ටී. 1991 වර්ෂයේ නොවැම්බර් 4 වන දින කැලිෆෝනියා සරසවියේ කැලිෆෝනියාවේ විශ්ව විද්යාලයේ පුවත්පත් ජර්නල්ස්, 1991 නොවැම්බර්. I "රෙඩාර්සෙස් පරීක්ෂණය හා අනුකූලතා පරීක්ෂා කිරීමේ අන්තර් ක්රියාකාරී වැඩසටහන්" ඩොන් ලිබ්ස් 1992 වර්ෂයේ එක්සත් ජනපදයේ ඔසෙනික්ස් සම්මේලනය, 135-144, සැන් ඇන්ටෝනියෝ, ජුනි 12-15, 1992 .. I "Kibitz - ඒකාබද්ධ ක්රියාකාරි වැඩසටහන් ඒකාබද්ධ කිරීම" ඩොන් ලිබ්ස්, මෘදුකාංග - ප්රායෝගික හා අත්දැකීම්, ජෝන් විලී සහ පුත්රයෝ, වෙස්ට් සසෙක්ස්, එංගලන්තය, ටී.

1993, අංක 5, මැයි 1993. I 1993 ටීඑන්එල් ලිබ්ස් විසින් 1993 ටීඑල්එල් / ටෙක් වැඩමුළුවෙහි බර්ක්ලි, CA, 1993 ජූනි 10-11,

කර්තෘ

ඩොන් ලිබ්ස්, ජාතික ප්රමිති හා තාක්ෂණ ආයතනය

අභිමානය

Tcl සඳහා ජෝන් ඕස්ටර්ෂූට සහ ස්ටුට් පයිස්ලීට ස්තුති කිරීම සඳහා ස්තූතියි. Expect's Autoconfiguration කේතය සඳහා Rob Savoye ස්තූතියි.

ඉතිහාස ගොනුව අපේක්ෂා කළ පරිණාමයේ බොහෝ දේ ලේඛනගත කරයි. මෙය සිත්ගන්නාසුළු කියවීමක් වන අතර මෙම මෘදුකාංගය සඳහා ඔබට තවදුරටත් අවබෝධයක් ලබා දිය හැකිය. මා සඳහන් කළ අයගේ දෝෂයන් මා නිවැරදි කර වෙනත් ආධාර ලබා දුන්නා.

අපේක්ෂාව නිර්මාණය කිරීම හා ක්රියාත්මක කිරීම එක්සත් ජනපද රජය විසින් කොටසක් වශයෙන් ලබා දී ඇති අතර එම නිසා එය පොදු වසම තුළ වේ. කෙසේ වෙතත්, මෙම වැඩසටහන සහ ලේඛන හෝ කොටස් භාවිතා කරන්නේ නම්, කතුවරයා හා NIST වලට ප්රශංසා වේ.