انتظار - آنلاین در ابر

این فرمانی است که انتظار می رود می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


انتظار - گفتگوی برنامه ریزی شده با برنامه های تعاملی، نسخه 5

خلاصه


انتظار [ -dDinN ] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ قوس ]

معرفی


انتظار می رود برنامه ای است که طبق یک اسکریپت با سایر برنامه های تعاملی "گفتگو" می کند.
به دنبال فیلمنامه، انتظار می رود می داند که از یک برنامه چه انتظاری می توان داشت و چه چیزی
پاسخ صحیح باید باشد یک زبان تفسیر شده، انشعاب و سطح بالایی را فراهم می کند
ساختارهای کنترلی برای هدایت گفتگو علاوه بر این، کاربر می تواند کنترل و
در صورت تمایل مستقیماً تعامل داشته باشید، سپس کنترل را به اسکریپت برگردانید.

انتظار می رود مخلوطی از است انتظار می رود و Tk. درست مثل رفتار میکنه انتظار می رود و Tk's آرزو. انتظار می رود
همچنین می تواند به طور مستقیم در C یا C ++ (یعنی بدون Tcl) استفاده شود. دیدن libeexpect(3).

نام "انتظار" از این ایده گرفته شده است ارسال/انتظار سکانس هایی که توسط uucp، kermit رایج شده است
و سایر برنامه های کنترل مودم. با این حال بر خلاف uucp، انتظار می رود تعمیم می یابد به طوری که آن
می تواند به عنوان یک دستور در سطح کاربر با هر برنامه و کاری در ذهن اجرا شود. انتظار می رود در واقع می تواند
همزمان با چند برنامه صحبت کنید.

به عنوان مثال، در اینجا مواردی وجود دارد انتظار می رود می توانید انجام دهید:

· باعث شود رایانه شما با شما تماس بگیرد تا بتوانید بدون پرداخت هزینه وارد شوید
تماس.

یک بازی را شروع کنید (به عنوان مثال، سرکش) و اگر پیکربندی بهینه ظاهر نشد،
آن را مجدداً راه اندازی کنید (بارها و بارها) تا زمانی که انجام شود، سپس کنترل را به شما واگذار کنید.

· fsck را اجرا کنید و در پاسخ به سؤالات آن، «بله»، «نه» یا کنترل بدهید
بر اساس معیارهای از پیش تعیین شده به شما باز می گردم.

· اتصال به شبکه یا BBS دیگر (مثلا MCI Mail، CompuServe) و
ایمیل خود را به طور خودکار بازیابی کنید تا به نظر برسد که گویی از ابتدا بوده است
به سیستم محلی شما ارسال می شود.

· متغیرهای محیطی، دایرکتوری فعلی، یا هر نوع اطلاعات را حمل کنید
در سراسر rlogin، telnet، tip، su، chgrp و غیره.

دلایل مختلفی وجود دارد که چرا پوسته نمی تواند این وظایف را انجام دهد. (سعی کنید، خواهید شد
ببینید.) همه ممکن است با انتظار می رود.

به طور کلی، انتظار می رود برای اجرای هر برنامه ای که نیاز به تعامل بین آنها دارد مفید است
برنامه و کاربر تنها چیزی که لازم است این است که تعامل می تواند باشد
به صورت برنامه ای مشخص می شود. انتظار می رود همچنین می تواند به کاربر کنترل مجدد بدهد (بدون
در صورت تمایل، برنامه در حال کنترل را متوقف کنید. به طور مشابه، کاربر می تواند کنترل را برگرداند
به فیلمنامه در هر زمان.

طریقه استفاده


انتظار می رود می خواند cmdfile برای لیستی از دستورات برای اجرا انتظار می رود همچنین ممکن است استناد شود
بطور ضمنی در سیستم هایی که از # پشتیبانی می کنند! علامت گذاری با علامت گذاری اسکریپت اجرایی، و
ساختن خط اول در اسکریپت:

#!/usr/bin/expect -f

البته مسیر باید به طور دقیق محل را توضیح دهد انتظار می رود زندگی می کند / usr / bin فقط یک
مثال.

La -c flag مقدمه دستوری است که باید قبل از هر دستوری در اسکریپت اجرا شود. دستور
باید نقل قول شود تا از تجزیه شدن توسط پوسته جلوگیری شود. ممکن است از این گزینه استفاده شود
چندین بار. ممکن است چندین دستور با یک فرمان اجرا شود -c با جدا کردن آنها
با نقطه ویرگول دستورات به ترتیبی که ظاهر می شوند اجرا می شوند. (هنگام استفاده از Expectk،
این گزینه به صورت مشخص شده است -فرمانده.)

La -d پرچم برخی از خروجی های تشخیصی را فعال می کند که در درجه اول فعالیت داخلی را گزارش می کند
دستوراتی مانند انتظار و تعامل. این پرچم همان اثر "exp_internal 1" را دارد
در ابتدای یک اسکریپت Expect، به علاوه نسخه انتظار می رود چاپ می شود. ( تسمه
دستور برای ردیابی عبارات مفید است رد دستور برای ردیابی مفید است
تخصیص متغیر.) (هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است -دیاگ.)

La -D flag یک دیباگر تعاملی را فعال می کند. یک مقدار صحیح باید دنبال شود. در
اگر مقدار غیر صفر باشد یا اگر a باشد، دیباگر کنترل را قبل از رویه Tcl بعدی در دست خواهد گرفت
^C فشار داده می شود (یا یک نقطه شکست ضربه می زند، یا سایر دستورهای دیباگر مناسب در آن ظاهر می شود
فیلمنامه). برای اطلاعات بیشتر در مورد فایل README یا مشاهده (در زیر) را ببینید
اشکال زدا. (هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است -اشکال زدایی.)

La -f flag مقدمه فایلی است که از آن دستورات را می‌توان خواند. خود پرچم اختیاری است
زیرا فقط هنگام استفاده از # مفید است! نشانه گذاری (نگاه کنید به بالا)، به طوری که استدلال های دیگر ممکن است
در خط فرمان عرضه شود. (هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است -فایل.)

به طور پیش فرض، فایل فرمان در حافظه خوانده می شود و به طور کامل اجرا می شود. این است
گاهی اوقات خواندن فایل ها یک خط در یک زمان مطلوب است. به عنوان مثال، stdin این خوانده می شود
مسیر. برای اینکه فایل های دلخواه را مجبور کنید به این روش مدیریت شوند، از -b پرچم. (چه زمانی
با استفاده از Expectk، این گزینه به صورت مشخص شده است -بافر.)توجه داشته باشیدکهstdio-
بافرممکن استهنوزگرفتنمحلامااین نباید هنگام خواندن از یک fifo یا مشکلی ایجاد کند
stdin.

اگر رشته "-" به عنوان نام فایل ارائه شود، ورودی استاندارد به جای آن خوانده می شود. (استفاده کنید "./-"
برای خواندن از فایلی با نام واقعی "-".)

La -i پرچم باعث می شود انتظار می رود به‌جای خواندن دستورات، به‌صورت تعاملی از آنها درخواست کنید
از یک فایل درخواست از طریق خاتمه می یابد خروج دستور یا بر اساس EOF. دیدن مترجم
(در زیر) برای اطلاعات بیشتر. -i فرض می شود اگر نه یک فایل فرمان و نه -c استفاده می شود.
(هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است -در ارتباط بودن.)

-- ممکن است برای محدود کردن انتهای گزینه ها استفاده شود. این مفید است اگر شما می خواهید به تصویب
آرگومان گزینه مانند به اسکریپت شما بدون اینکه توسط آن تفسیر شود انتظار می رود. این می تواند
به طور مفید در # قرار می گیرد! خط برای جلوگیری از هرگونه تفسیر پرچم مانند توسط Expect. برای
به عنوان مثال، موارد زیر آرگومان های اصلی (از جمله نام اسکریپت) را در آن باقی می گذارد
متغیر argv.

#!/usr/bin/expect --

توجه داشته باشید که معمول است گرفتن(3) و اجرا کردن(2) هنگام اضافه کردن باید قراردادها رعایت شود
استدلال به #! خط

فایل $exp_library/expect.rc در صورت وجود به طور خودکار منبع می شود، مگر اینکه این فایل وجود داشته باشد -N پرچم است
استفاده شده. (هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است -NORC.) بلافاصله پس از این،
فایل ~/.expect.rc به طور خودکار منبع می شود، مگر اینکه -n پرچم استفاده می شود. اگر
متغیر محیطی DOTDIR تعریف شده است، به عنوان یک دایرکتوری در نظر گرفته می شود و .expect.rc است
از آنجا بخوانید (هنگام استفاده از Expectk، این گزینه به صورت مشخص شده است نورک.) این منبع یابی
تنها پس از اجرای هر یک رخ می دهد -c پرچم ها

-v باعث می شود انتظار چاپ شماره نسخه آن و خروج از آن وجود داشته باشد. (پرچم مربوطه در
Expectk، که از نام‌های پرچم بلند استفاده می‌کند، نسخه - است.)

اختیاری قوس در یک لیست ساخته شده و در متغیر نامگذاری شده ذخیره می شوند argv. بحث کردن is
به طول argv مقدار دهی اولیه می شود.

argv0 به عنوان نام اسکریپت (یا باینری در صورت عدم استفاده از اسکریپت) تعریف می شود. برای
به عنوان مثال، شکل زیر نام اسکریپت و سه آرگومان اول را چاپ می کند:

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

دستورات


انتظار می رود استفاده Tcl (زبان دستور ابزار). Tcl جریان کنترلی را فراهم می کند (به عنوان مثال، اگر، برای،
شکست)، ارزیابی بیان و چندین ویژگی دیگر مانند بازگشت، رویه
تعریف و غیره. دستوراتی که در اینجا استفاده می شوند اما تعریف نشده اند (مثلاً تنظیم, if, exec) Tcl هستند
دستورات (نگاه کنید به tcl(3). انتظار می رود از دستورات اضافی پشتیبانی می کند که در زیر توضیح داده شده است. مگر اینکه
در غیر این صورت، دستورات رشته خالی را برمی گرداند.

دستورات بر اساس حروف الفبا فهرست شده اند تا بتوان به سرعت آنها را پیدا کرد. با این حال، جدید
ممکن است برای کاربران آسان‌تر باشد که با خواندن توضیحات شروع کنند تخم ریزی, ارسال, انتظارو
تعامل، به این ترتیب

توجه داشته باشید که بهترین مقدمه برای زبان (هر دو Expect و Tcl) در ارائه شده است
کتاب "کاوش در انتظار" (همچنین به زیر مراجعه کنید). نمونه هایی در این صفحه مرد گنجانده شده است اما
آنها بسیار محدود هستند زیرا این صفحه مرد در درجه اول به عنوان ماده مرجع در نظر گرفته شده است.

توجه داشته باشید که در متن این صفحه مرد، "انتظار" با حرف بزرگ "E" به
انتظار می رود برنامه در حالی که "انتظار" با حروف کوچک "e" به آن اشاره دارد انتظار فرمان در داخل
la انتظار می رود برنامه.)

نزدیک [-برده] [-onexec 0|1] [-من spawn_id]
اتصال به فرآیند جاری را می بندد. اکثر برنامه های تعاملی شناسایی می کنند
EOF در stdin و خروج آنها. بدین ترتیب نزدیک معمولاً برای از بین بردن این فرآیند کافی است
خوب. -i flag فرآیند بسته شدن را مطابق با نامگذاری شده اعلام می کند
spawn_id.

هر دو انتظار و تعامل زمانی که فرآیند فعلی خارج می شود و به طور ضمنی تشخیص می دهد
انجام یک نزدیک. اما اگر فرآیند را با مثلاً "exec kill $pid" بکشید، باید این کار را انجام دهید
به صراحت تماس بگیرید نزدیک.

La -onexec flag تعیین می کند که آیا شناسه تخم ریزی در هر تخم ریزی جدید بسته می شود یا خیر
فرآیندها یا اگر فرآیند روی هم قرار گرفته باشد. برای باز گذاشتن شناسه تخم ریزی، از مقدار استفاده کنید
0. یک مقدار صحیح غیرصفر باعث می شود که در هر مورد جدید، Spawn بسته شود (پیش فرض).
فرآیندهای.

La -برده flag slave مربوط به spwn id را می بندد. (به "spawn -pty" مراجعه کنید.)
هنگامی که اتصال بسته می شود، برده نیز به طور خودکار بسته می شود
باز.

مهم نیست که اتصال به طور ضمنی یا صریح بسته شده باشد، باید تماس بگیرید
صبر کنيد برای پاک کردن شکاف پردازش هسته مربوطه. نزدیک تماس نمی گیرد صبر کنيد
زیرا هیچ تضمینی وجود ندارد که بستن یک اتصال فرآیند باعث خروج آن شود.
دیدن صبر کنيد در زیر برای اطلاعات بیشتر

اشکال زدایی کردن [[-اکنون] 0|1]
یک اشکال‌زدای Tcl را کنترل می‌کند که به شما امکان می‌دهد از دستورات عبور کنید، نقاط شکست را تنظیم کنید،
و غیره.

بدون هیچ آرگومان، اگر دیباگر در حال اجرا نباشد، عدد 1 برگردانده می شود، در غیر این صورت 0 است
برگشت

با آرگومان 1، دیباگر شروع می شود. با آرگومان 0، دیباگر است
متوقف شد. اگر آرگومان 1 قبل از علامت باشد -اکنون پرچم، دیباگر شروع شده است
بلافاصله (یعنی در وسط اشکال زدایی کردن خود فرمان). در غیر این صورت،
دیباگر با عبارت Tcl بعدی شروع می شود.

La اشکال زدایی کردن دستور هیچ تله ای را تغییر نمی دهد. این را با شروع Expect با مقایسه کنید
la -D پرچم (به بالا مراجعه کنید).

برای اطلاعات بیشتر در مورد دیباگر، فایل README را ببینید یا (در زیر) را ببینید.

جدا کردن
فرآیند دوشاخه را از ترمینال قطع می کند. در حال اجرا در
زمینه. فرآیند به گروه فرآیند خود (در صورت امکان) داده می شود. ورودی/خروجی استاندارد
به /dev/null هدایت می شود.

قطعه زیر استفاده می کند جدا کردن برای ادامه اجرای اسکریپت در
زمینه.

اگر {[fork]!=0} خارج شوید
جدا کردن
. . .

اسکریپت زیر یک رمز عبور را می خواند و سپس هر ساعت یک برنامه را اجرا می کند
هر بار که اجرا می شود یک رمز عبور می خواهد. اسکریپت رمز عبور را فراهم می کند تا
فقط یکبار باید آن را تایپ کنید (نگاه کنید به استی دستوری که نحوه چرخش را نشان می دهد
بازتاب رمز عبور خاموش.)

send_user "password?\"
expect_user -re "(.*)\n"
برای {} 1 {} {
if {[fork]!=0} {sleep 3600;continue}
جدا کردن
تخم ریزی priv_prog
انتظار رمز عبور:
ارسال "$expect_out(1,string)\r"
. . .
خروج
}

یک مزیت برای استفاده جدا کردن روی پوسته ویژگی فرآیند ناهمزمان (&) است
که انتظار می رود می تواند پارامترهای ترمینال را قبل از قطع و سپس بعداً ذخیره کند
آنها را روی ptys جدید اعمال کنید. با &، انتظار می رود فرصتی برای خواندن ندارد
پارامترهای ترمینال از آنجایی که ترمینال قبلاً با زمان قطع شده است انتظار می رود
کنترل را دریافت می کند.

خروج [-opts] [وضعیت]
علل انتظار می رود برای خروج یا در غیر این صورت آماده شدن برای انجام این کار.

La -onexit flag باعث می شود که آرگومان بعدی به عنوان کنترل کننده خروجی استفاده شود. بدون یک
آرگومان، کنترل کننده خروجی فعلی برگردانده می شود.

La -بدون خروج پرچم باعث می شود انتظار می رود برای آماده شدن برای خروج اما در واقع توقف کنید
بازگرداندن کنترل به سیستم عامل کنترل کننده خروجی تعریف شده توسط کاربر به صورت اجرا می شود
و همچنین کنترل کننده های داخلی خود Expect. دیگر دستورات Expect نباید باشد
اجرا شده. اگر Expect را با سایر پسوندهای Tcl اجرا می کنید، مفید است. در
مفسر فعلی (و پنجره اصلی اگر در محیط Tk باشد) باقی می ماند تا بقیه
پسوندهای Tcl می توانند پاکسازی کنند. اگر انتظار می رود خروج دوباره فراخوانی می شود (هر چند ممکن است
رخ می دهد)، کنترل کننده ها دوباره اجرا نمی شوند.

پس از خروج، تمام اتصالات به فرآیندهای تخم ریزی شده بسته می شوند. تعطیلی خواهد بود
به عنوان یک EOF توسط فرآیندهای تخم ریزی شده شناسایی می شود. خروج هیچ اقدام دیگری فراتر از آن انجام نمی دهد
طبیعی _خروج(2) رویه انجام می دهد. بنابراین، فرآیندهایی ایجاد می شوند که بررسی نمی شوند
EOF ممکن است به کار خود ادامه دهد. (شرایط مختلفی برای تعیین مهم هستند
به عنوان مثال، سیگنال هایی که یک فرآیند تخم ریزی شده ارسال خواهد شد، اما اینها سیستم هستند
وابسته، معمولاً در زیر مستند شده است خروج(3).) فرآیندهای ایجاد شده که همچنان ادامه دارند
run توسط init به ارث می رسد.

وضعیت (یا 0 اگر مشخص نشده باشد) به عنوان وضعیت خروج برگردانده می شود انتظار می رود. خروج is
در صورت رسیدن به پایان اسکریپت به طور ضمنی اجرا می شود.

exp_continue [-continue_timer]
دستور exp_continue اجازه می دهد تا انتظار خود را به اجرا ادامه دهد نه
بازگشت به حالت عادی به صورت پیش فرض exp_continue تایمر وقفه را بازنشانی می کند.
La -continue_timer پرچم از راه اندازی مجدد تایمر جلوگیری می کند. (دیدن انتظار برای اطلاعات بیشتر
اطلاعات.)

exp_internal [-f فایل] ارزش
باعث می شود دستورات بیشتری برای ارسال اطلاعات تشخیصی داخلی به انتظار می رود به stderr
if ارزش غیر صفر است این خروجی غیرفعال است اگر ارزش 0 است. تشخیصی
اطلاعات شامل هر کاراکتر دریافت شده و هر تلاشی که برای مطابقت با آن انجام شده است
خروجی جریان در برابر الگوها

اگر اختیاری است پرونده ارائه شده است، تمام خروجی های عادی و اشکال زدایی روی آن نوشته شده است
فایل (صرف نظر از مقدار ارزش). هر فایل خروجی تشخیصی قبلی است
بسته

La -اطلاعات flag باعث می‌شود exp_internal شرحی از جدیدترین موارد غیر را برگرداند.
آرگومان های اطلاعاتی داده شده

exp_open [ارگ] [-من spawn_id]
یک شناسه فایل Tcl را برمی گرداند که با شناسه اولیه spwn مطابقت دارد. پرونده
شناسه می تواند به گونه ای استفاده شود که گویی توسط Tcl باز شده است باز کن فرمان ( تخم ریزی
id دیگر نباید استفاده شود. آ صبر کنيد نباید اعدام شود

La -باز بزار پرچم شناسه اسپاون را برای دسترسی از طریق دستورات Expect باز می گذارد. آ
صبر کنيد باید در شناسه spawn اجرا شود.

exp_pid [-من spawn_id]
شناسه فرآیند مربوط به فرآیند ایجاد شده در حال حاضر را برمی‌گرداند. اگر -i
flag استفاده می شود، pid برگردانده شده مطابق با شناسه spwn داده شده است.

exp_send
نام مستعار برای است ارسال.

exp_send_error
نام مستعار برای است send_error.

exp_send_log
نام مستعار برای است send_log.

exp_send_tty
نام مستعار برای است send_tty.

exp_send_user
نام مستعار برای است send_user.

exp_version [[-خروج] نسخه]
برای اطمینان از سازگاری اسکریپت با نسخه فعلی مفید است
انتظار.

بدون هیچ استدلال، نسخه فعلی انتظار می رود برگردانده می شود. این نسخه ممکن است پس از آن
در اسکریپت شما کدگذاری شود. اگر واقعاً می دانید که از ویژگی های استفاده نمی کنید
نسخه های اخیر، می توانید نسخه قبلی را مشخص کنید.

نسخه ها از سه عدد تشکیل شده اند که با نقطه از هم جدا شده اند. اول عدد اصلی است.
اسکریپت های نوشته شده برای نسخه های انتظار می رود با یک عدد اصلی متفاوت تقریبا
مطمئنا کار نمی کند exp_version اگر اعداد اصلی با هم مطابقت نداشته باشند، خطا را برمی‌گرداند.

دوم عدد جزئی است. اسکریپت هایی که برای نسخه ای با مینور بزرگتر نوشته شده اند
تعداد نسبت به نسخه فعلی ممکن است به برخی از ویژگی های جدید بستگی داشته باشد و ممکن است اجرا نشود.
exp_version اگر اعداد اصلی مطابقت داشته باشند، اما اسکریپت شماره فرعی را نشان می دهد
بزرگتر از دویدن است انتظار می رود.

سوم عددی است که هیچ نقشی در مقایسه نسخه ایفا نمی کند. با این حال، این است
زمانی که انتظار می رود توزیع نرم افزار به هر طریقی تغییر می کند، مانند
اسناد اضافی یا بهینه سازی با هر مینور جدید به 0 بازنشانی می شود
نسخه.

با -خروج پرچم، انتظار می رود خطا را چاپ می کند و اگر نسخه قدیمی باشد از آن خارج می شود.

انتظار [[-opts] pat1 بدن 1] ... [-opts] پتن [بدن]
منتظر می ماند تا یکی از الگوها با خروجی یک فرآیند تخم ریزی شده مطابقت داشته باشد
دوره زمانی گذشته است، یا پایان فایل مشاهده می شود. اگر بدنه نهایی خالی باشد، آن را
ممکن است حذف شود

الگوهایی از جدیدترین انتظار_قبل از دستور به طور ضمنی قبل از هر مورد استفاده می شود
الگوهای دیگر الگوهایی از جدیدترین انتظار_بعد دستور به طور ضمنی هستند
بعد از هر الگوی دیگری استفاده می شود.

اگر استدلال به کل انتظار بیانیه نیاز به بیش از یک خط، همه
ممکن است آرگومان‌ها در یک آرگومان «پرانتز» شوند تا از خاتمه هر خط با a جلوگیری شود
بک اسلش در این یک مورد، تعویض های معمول Tcl با وجود این اتفاق می افتد
بریس ها

اگر یک الگو کلمه کلیدی است اوف، بدن مربوطه در پایان اجرا می شود
فایل. اگر یک الگو کلمه کلیدی است فاصله، بدن مربوطه اجرا می شود
تایم اوت اگر از هیچ کلمه کلیدی ایست استفاده نشود، یک عمل تهی ضمنی بر روی آن اجرا می شود
تایم اوت دوره وقفه پیش‌فرض 10 ثانیه است، اما ممکن است برای مثال تنظیم شود
30، با دستور "set timeout 30". ممکن است مدت زمان نامحدودی توسط
مقدار -1. اگر یک الگو کلمه کلیدی است به طور پیش فرض، بدن مربوطه اجرا می شود
پس از اتمام یا پایان پرونده

اگر یک الگو مطابقت داشته باشد، بدن مربوطه اجرا می شود. انتظار برمی گرداند
نتیجه بدنه (یا رشته خالی اگر هیچ الگوی مطابقت نداشته باشد). در صورتی که
الگوهای متعدد مطابقت دارند، الگویی که ابتدا ظاهر می شود برای انتخاب بدنه استفاده می شود.

هر بار که خروجی جدید می رسد، با هر الگوی به ترتیبی که هستند مقایسه می شود
ذکر شده. بنابراین، می‌توانید با ساختن آخرین الگو، عدم وجود تطابق را آزمایش کنید
چیزی که تضمین شده ظاهر می شود، مانند یک اعلان. در شرایطی که وجود ندارد
سریع، شما باید استفاده کنید فاصله (درست مانند زمانی که به صورت دستی با هم تعامل داشتید).

الگوها به سه صورت مشخص می شوند. به طور پیش فرض، الگوها مانند با مشخص می شوند
Tcl رشته همخوانی داشتن فرمان (این گونه الگوها نیز شبیه به C-shell معمولی هستند
عباراتی که معمولاً به عنوان الگوهای "glob" شناخته می شوند). را -گل ممکن است از پرچم استفاده شود
برای محافظت از الگوهایی که در غیر این صورت ممکن است مطابقت داشته باشند انتظار پرچم از انجام این کار. هر
الگویی که با "-" شروع می شود باید از این طریق محافظت شود. (همه رشته ها شروع می شوند
با "-" برای گزینه های آینده محفوظ است.)

به عنوان مثال، قطعه زیر به دنبال یک ورود موفق است. (توجه داشته باشید که سقط
فرض می شود که رویه ای است که در جای دیگری از اسکریپت تعریف شده است.)

انتظار {
مشغول {مشغول می کند\n ; exp_continue}
سقط ناموفق
"گذرواژه نامعتبر" لغو شد
زمان سقط
متصل
}

نقل قول در الگوی چهارم ضروری است زیرا حاوی یک فاصله است
در غیر این صورت الگو را از عمل جدا کنید. الگوهایی با عملکرد یکسان (مانند
به عنوان 3 و 4) نیاز به فهرست کردن دوباره اقدامات. با استفاده از این امر می توان جلوگیری کرد
الگوهای به سبک regexp (به زیر مراجعه کنید). اطلاعات بیشتر در مورد تشکیل الگوهای به سبک گلوب
را می توان در کتابچه راهنمای Tcl پیدا کرد.

الگوهای به سبک Regexp از نحو تعریف شده توسط Tcl پیروی می کنند regexp (مخفف «معمولی
بیان") فرمان الگوهای regexp با پرچم معرفی می شوند -ره.
مثال قبلی را می توان با استفاده از regexp به صورت زیر بازنویسی کرد:

انتظار {
مشغول {مشغول می کند\n ; exp_continue}
-re "failed|رمز عبور نامعتبر" لغو شد
زمان سقط
متصل
}

هر دو نوع الگو "بدون لنگر" هستند. این بدان معنی است که الگوها مجبور نیستند
با کل رشته مطابقت داشته باشد، اما می تواند مسابقه را در هر جایی از رشته شروع و پایان دهد (مانند
تا زمانی که همه چیز مطابقت داشته باشد). از ^ برای مطابقت با ابتدای رشته و $ استفاده کنید
برای مطابقت با پایان توجه داشته باشید که اگر منتظر پایان یک رشته نباشید،
پاسخ‌ها می‌توانند به راحتی در وسط رشته به پایان برسند، زیرا از آن بازتاب می‌شوند
فرآیند تخم ریزی در حالی که هنوز نتایج درستی تولید می شود، خروجی می تواند به نظر برسد
غیر طبیعی بنابراین، اگر بتوانید دقیقاً شخصیت ها را توصیف کنید، استفاده از $ تشویق می شود
در انتهای یک رشته

توجه داشته باشید که در بسیاری از ویرایشگرها، ^ و $ با ابتدا و انتهای خطوط مطابقت دارند
به ترتیب. با این حال، چون انتظار خط گرا نیست، این شخصیت ها مطابقت دارند
ابتدا و انتهای داده ها (برخلاف خطوط) در حال حاضر در انتظار می باشد
بافر تطبیق (همچنین به یادداشت زیر در مورد "سوء هاضمه" مراجعه کنید.)

La -سابق flag باعث می شود که الگو به عنوان یک رشته "دقیق" مطابقت داده شود. خیر
تفسیر *، ^، و غیره ساخته شده است (اگرچه قراردادهای معمول Tcl باید همچنان وجود داشته باشد
رعایت شود). الگوهای دقیق همیشه بدون لنگر هستند.

La -نکاسه flag باعث می شود که کاراکترهای بزرگ خروجی با هم مقایسه شوند
حروف کوچک بودند الگو تحت تأثیر قرار نمی گیرد.

در حین خواندن خروجی، بیش از 2000 بایت می تواند بایت های قبلی را مجبور کند
"فراموش شده". این ممکن است با عملکرد تغییر کند match_max. (توجه داشته باشید که
مقادیر بیش از حد بزرگ می تواند تطبیق الگو را کاهش دهد.) اگر patlist is
full_buffer، بدن مربوطه اجرا می شود اگر match_max بایت بوده است
دریافت شده و هیچ الگوی دیگری مطابقت ندارد. خواه یا نه full_buffer کلمه کلیدی
استفاده می شود، کاراکترهای فراموش شده در expect_out (بافر) نوشته می شوند.

If patlist کلمه کلیدی است تهی، و null ها مجاز هستند (از طریق remove_nulls
فرمان)، بدن مربوطه اجرا می شود اگر یک ASCII 0 تطبیق داده شود. این است
تطبیق 0 بایت از طریق الگوهای glob یا regexp امکان پذیر نیست.

پس از تطبیق یک الگو (یا eof یا full_buffer)، هر تطبیق و قبلا
خروجی بی همتا در متغیر ذخیره می شود expect_out (بافر). تا 9 regexp
مطابقت های زیر رشته ای در متغیرها ذخیره می شوند expect_out (1، رشته) از طریق
expect_out (9، رشته). اگر -شاخص ها پرچم قبل از یک الگو، شروع استفاده می شود
و شاخص های پایانی (به شکل مناسب برای محدوده) از 10 رشته در آن ذخیره می شود
متغیرها expect_out (X، شروع) و expect_out (X، پایان) جایی که X یک رقم است،
مربوط به موقعیت رشته فرعی در بافر است. 0 به رشته هایی اشاره دارد که
با کل الگو مطابقت دارد و برای الگوهای glob و همچنین regexp تولید می شود
الگوها به عنوان مثال، اگر یک فرآیند خروجی "abcdefgh\n" تولید کرده باشد، نتیجه
از:

انتظار "سی دی"

گویی عبارات زیر اجرا شده است:

سی دی expect_out (0، رشته) را تنظیم کنید
تنظیم expect_out (بافر) abcd

و "efgh\n" در بافر خروجی باقی می ماند. اگر فرآیندی خروجی را تولید کند
"abbbcabkkkka\n"، نتیجه:

انتظار -شاخص -re "b(b*).*(k+)"

گویی عبارات زیر اجرا شده است:

set expect_out (0, start) 1
تنظیم expect_out(0,end) 10
تنظیم expect_out (0، رشته) bbbcabkkkk
set expect_out (1, start) 2
تنظیم expect_out(1,end) 3
تنظیم expect_out (1، رشته) bb
set expect_out (2, start) 10
تنظیم expect_out(2,end) 10
set expect_out(2,string) k
تنظیم expect_out (بافر) abbbcabkkkk

و "a\n" در بافر خروجی باقی می ماند. الگوی "*" (و -re ".*") فلاش می شود
بافر خروجی بدون خواندن خروجی بیشتر از فرآیند.

به طور معمول، خروجی منطبق از بافرهای داخلی Expect حذف می شود. این ممکن است
با قرار دادن پیشوند یک الگو با the جلوگیری شود -عدم انتقال پرچم. این پرچم است
به ویژه در آزمایش مفید است (و برای راحتی می توان آن را به اختصار "-not" نامید
در حین آزمایش).

شناسه تخم‌ریزی مرتبط با خروجی منطبق (یا eof یا full_buffer) ذخیره می‌شود
in expect_out (spawn_id).

La -تایم اوت flag باعث می شود که دستور current expect از مقدار زیر به عنوان a استفاده کند
به جای استفاده از مقدار متغیر timeout.

با این حال، به‌طور پیش‌فرض، الگوها با خروجی فرآیند جاری مطابقت دارند
la -i flag اعلام می کند که خروجی از لیست spawn_id نامگذاری شده با هر کدام مطابقت دارد
الگوهای زیر (تا بعدی -i). لیست spawn_id باید a باشد
فهرستی از spawn_ids یا متغیری که به چنین لیستی اشاره می‌کند، با فضای خالی جدا شده است
spawn_ids.

به عنوان مثال، مثال زیر منتظر "متصل" از فرآیند فعلی است،
یا "مشغول"، "ناموفق" یا "گذرواژه نامعتبر" از spawn_id که توسط $proc2 نامگذاری شده است.

انتظار {
-i $proc2 busy {puts busy\n ; exp_continue}
-re "failed|رمز عبور نامعتبر" لغو شد
زمان سقط
متصل
}

مقدار متغیر جهانی any_spawn_id ممکن است برای تطبیق الگوها با هر کدام استفاده شود
spawn_id هایی که با همه نامگذاری شده اند -i پرچم ها در جریان انتظار فرمان دادن
spawn_id از a -i پرچم بدون الگوی مرتبط (یعنی بلافاصله پس از آن
دیگر -i) در دسترس هر الگوی دیگری در همان است انتظار فرمان
ارتباط با any_spawn_id.

La -i flag همچنین ممکن است یک متغیر سراسری را نامگذاری کند که در این صورت متغیر برای a خوانده می شود
لیست شناسه های تخم ریزی متغیر هر زمان که تغییر کند دوباره خوانده می شود. این یک راه را فراهم می کند
تغییر منبع I/O در حالی که دستور در حال اجرا است. شناسه تخمگذاری ارائه شده است
به این روش، شناسه های تخم ریزی "غیر مستقیم" نامیده می شوند.

اقداماتی مانند شکستن و ادامه دادن باعث ایجاد ساختارهای کنترلی (به عنوان مثال، برای, مجموعه مقالات) به
به روش معمول رفتار کنید دستور exp_continue اجازه می دهد تا انتظار خودش ادامه دهد
اجرا به جای بازگشت به حالت عادی.

این برای اجتناب از حلقه های صریح یا عبارات انتظار مکرر مفید است. در
مثال زیر بخشی از یک قطعه برای خودکار کردن Rlogin است. در exp_continue جلوگیری
باید یک ثانیه بنویسد انتظار بیانیه (برای جستجوی مجدد درخواست) اگر
rlogin رمز عبور را درخواست می کند.

انتظار {
کلمه عبور: {
stty -echo
send_user "رمز عبور (برای $user) در $host:"
expect_user -re "(.*)\n"
send_user "\n"
ارسال "$expect_out(1,string)\r"
اکو stty
exp_continue
} غلط {
send_user "گذرواژه یا حساب نامعتبر\n"
خروج
} تایم اوت {
send_user "زمان اتصال به $host تمام شد\n"
خروج
} eof {
send_user
"اتصال به میزبان انجام نشد: $expect_out(buffer)"
خروج
} -re $prompt
}

به عنوان مثال، قطعه زیر ممکن است به کاربر کمک کند تا تعاملی را هدایت کند
در حال حاضر کاملاً خودکار در این حالت ترمینال در حالت خام قرار می گیرد. اگر
کاربر "+" را فشار می دهد، یک متغیر افزایش می یابد. اگر "p" فشار داده شود، چندین برمی گردند
به فرآیند ارسال می شود، شاید به نوعی آن را فشار دهد، و "i" به کاربر اجازه تعامل می دهد
با این فرآیند، به طور موثر کنترل را از فیلمنامه ربوده است. در هر مورد،
la exp_continue جریان را اجازه می دهد انتظار برای ادامه تطبیق الگوی بعد
اجرای عمل جاری

stty raw -echo
انتظار_بعد از {
-i $user_spawn_id
"p" {ارسال "\r\r\r"; exp_continue}
"+" {incr foo; exp_continue}
"من" {تعامل; exp_continue}
خروج "ترک"
}

به طور پیش فرض، exp_continue تایمر وقفه را بازنشانی می کند. تایمر دوباره راه اندازی نمی شود، اگر
exp_continue با نامیده می شود -continue_timer پرچم.

انتظار_بعد [expect_args]
کار می کند یکسان به انتظار_قبل از به جز اینکه اگر الگوهایی از هر دو انتظار و
انتظار_بعد می تواند مطابقت داشته باشد، انتظار الگو استفاده می شود. را ببینید انتظار_قبل از فرمان
برای اطلاعات بیشتر.

انتظار_زمینه [expect_args]
همان آرگومان ها را می گیرد انتظار، اما بلافاصله برمی گردد. الگوها هستند
هر زمان که ورودی جدید وارد شود آزمایش می شود. الگو فاصله و به طور پیش فرض بی معنی هستند
به انتظار_زمینه و بی سر و صدا دور انداخته می شوند. در غیر این صورت، انتظار_زمینه
دستور استفاده می کند انتظار_قبل از و انتظار_بعد الگوهای درست مثل انتظار انجام می دهد.

چه زمانی انتظار_زمینه اقدامات در حال ارزیابی، پردازش پس زمینه برای
همان spwn id مسدود شده است. هنگام انجام عمل، پردازش پس‌زمینه رفع انسداد می‌شود
کامل می کند. در حالی که پردازش پس‌زمینه مسدود است، می‌توان یک مورد را انجام داد
(پیش زمینه) انتظار در همان شناسه تخم ریزی

امکان اجرای یک وجود ندارد انتظار در حالی که انتظار_زمینه رفع انسداد است.
انتظار_زمینه برای یک Spawn ID خاص با اعلام یک جدید حذف می شود
expect_background با همان spwn id. اعلام می کند انتظار_زمینه با هیچ
الگو شناسه تخم ریزی داده شده را از قابلیت تطبیق الگوهای موجود در آن حذف می کند
زمینه.

انتظار_قبل از [expect_args]
همان آرگومان ها را می گیرد انتظار، اما بلافاصله برمی گردد. الگو-عمل
جفت از جدیدترین انتظار_قبل از با همان Spawn ID به طور ضمنی اضافه می شوند
به هر دنبال کننده ای انتظار دستورات اگر الگوی مطابقت داشته باشد، به گونه ای رفتار می شود که گویی وجود داشته است
در مشخص شده است انتظار به خود فرمان داده و بدنه مرتبط در آن اجرا می شود
زمینه از انتظار فرمان اگر الگوهایی از هر دو انتظار_قبل از و انتظار
می تواند مطابقت داشته باشد، انتظار_قبل از الگو استفاده می شود.

اگر هیچ الگوی مشخص نشده باشد، شناسه تخم ریزی برای هیچ الگوی بررسی نمی شود.

مگر اینکه توسط a لغو شود -i پرچم، انتظار_قبل از الگوها با شناسه تخم ریزی مطابقت دارند
در زمانی که انتظار_قبل از فرمان اجرا شد (نه زمانی که
الگو مطابقت دارد).

پرچم -info باعث می شود انتظار_قبل از برای برگرداندن مشخصات فعلی چه
الگوهای آن مطابقت خواهد داشت. به طور پیش فرض، در مورد شناسه تخم ریزی فعلی گزارش می دهد. یک
مشخصات اختیاری شناسه تخم ریزی ممکن است برای اطلاعات در مورد آن شناسه تخم ریزی داده شود. برای
مثال

expect_before -info -i $proc

حداکثر ممکن است یک مشخصات شناسه تخمگذاری داده شود. پرچم - غیر مستقیم سرکوب می کند
شناسه های مستقیم تخم ریزی که فقط از مشخصات غیر مستقیم می آیند.

به جای مشخصات شناسه تخمگذار، پرچم "-all" باعث می شود که "-info" گزارش دهد.
همه شناسه های تخم ریزی

خروجی پرچم -info را می توان به عنوان آرگومان انتظار_before دوباره استفاده کرد.

expect_tty [expect_args]
مثل این است انتظار اما کاراکترها را از /dev/tty می خواند (یعنی ضربه زدن به کلید از
کاربر). به طور پیش فرض، خواندن در حالت پخته انجام می شود. بنابراین، خطوط باید به پایان برسد
بازگشت به منظور انتظار برای دیدن آنها. این ممکن است از طریق تغییر کند استی (نگاه کنید به
استی دستور زیر).

expect_user [expect_args]
مثل این است انتظار اما کاراکترهای stdin را می خواند (یعنی ضربه زدن به کلید از کاربر).
به طور پیش فرض، خواندن در حالت پخته انجام می شود. بنابراین، خطوط باید با بازگشت پایان یابد
برای انتظار برای دیدن آنها. این ممکن است از طریق تغییر کند استی (نگاه کنید به استی فرمان
در زیر).

چنگال فرآیند جدیدی ایجاد می کند. فرآیند جدید یک کپی دقیق از روند فعلی است انتظار می رود
روند. در مورد موفقیت، چنگال 0 را به فرآیند جدید (فرزند) برمی گرداند و آن را برمی گرداند
شناسه فرآیند پردازش فرزند به فرآیند والد. در صورت شکست (به طور ثابت
کمبود منابع، به عنوان مثال، جابجایی فضا، حافظه)، چنگال -1 را به والد برمی گرداند
فرآیند، و هیچ پردازش فرزند ایجاد نمی شود.

فرآیندهای فورک شده از طریق خروج دستور، درست مانند فرآیند اصلی. چنگال شده
فرآیندها مجاز به نوشتن در فایل های گزارش هستند. اگر اشکال زدایی را غیرفعال نکنید یا
ورود به سیستم در اکثر فرآیندها، نتیجه می تواند گیج کننده باشد.

حتی برخی از پیاده سازی های pty ممکن است توسط چندین خواننده و نویسنده اشتباه گرفته شود
لحظه ای بنابراین، امن ترین است چنگال قبل از فرآیندهای تخم ریزی

تعامل [رشته 1 بدن 1] ... [رشته [بدن]]
کنترل فرآیند جاری را به کاربر می دهد، به طوری که ضربه های کلید به کاربر ارسال می شود
فرآیند جاری، و stdout و stderr فرآیند جاری برگردانده می شوند.

ممکن است جفت های رشته-بدنه به عنوان آرگومان مشخص شوند، در این صورت بدنه اجرا می شود
زمانی که رشته مربوطه وارد می شود. (به طور پیش فرض، رشته به ارسال نمی شود
روند فعلی.) مترجم اگر بدنه نهایی باشد، فرمان فرض می شود
گمشده

اگر استدلال به کل تعامل بیانیه نیاز به بیش از یک خط، همه
ممکن است آرگومان‌ها به یک «پرانتز» تبدیل شوند تا از خاتمه هر خط با a جلوگیری شود
بک اسلش در این یک مورد، تعویض های معمول Tcl با وجود این اتفاق می افتد
بریس ها

به عنوان مثال، دستور زیر با بدنه رشته زیر تعامل دارد
جفت های تعریف شده: وقتی ^Z فشار داده شود، انتظار می رود تعلیق شده است. ( -تنظیم مجدد پرچم بازیابی می کند
حالت های ترمینال.) هنگامی که ^A فشار داده می شود، کاربر "شما یک کنترل A را تایپ کردید" را می بیند و
فرآیند یک ^A ارسال می شود. هنگامی که $ فشار داده می شود، کاربر تاریخ را می بیند. وقتی ^C باشد
فشرده انتظار می رود خارج می شود. اگر "foo" وارد شود، کاربر "bar" را می بیند. وقتی ~~ است
فشرده، انتظار می رود مترجم به صورت تعاملی اجرا می شود.

CTRLZ \032 را تنظیم کنید
تعامل داشتن {
-بازنشانی $CTRLZ {exec kill -STOP [pid]}
\001 {send_user "شما یک control-A\n تایپ کردید";
ارسال "\001"
}
$ {send_user "تاریخ [قالب ساعت [ساعت ثانیه]] است."}
\003 خروج
foo {send_user "bar"}
~~
}

در جفت های رشته-بدنه، رشته ها به ترتیبی که به عنوان آرگومان فهرست شده اند مطابقت داده می شوند.
رشته هایی که تا حدی مطابقت دارند به فرآیند فعلی ارسال نمی شوند
بقیه می آیند اگر کاراکترها به گونه ای وارد شوند که دیگر نمی توانند وجود داشته باشند
احتمالاً مطابقت داشته باشد، فقط بخشی از رشته به فرآیند ارسال می شود
نمی توان بازی دیگری را شروع کرد. بنابراین، رشته هایی که زیر رشته های جزئی هستند
اگر رشته‌های اصلی که تلاش می‌کردند مطابقت داشته باشند، می‌توانند بعداً مطابقت داشته باشند
در نهایت شکست می خورد

به‌طور پیش‌فرض، تطبیق رشته‌ها دقیقاً بدون کارت‌های وحشی است. (در مقابل، انتظار
دستور به طور پیش فرض از الگوهای glob-style استفاده می کند -سابق پرچم ممکن است برای محافظت استفاده شود
الگوهایی که در غیر این صورت ممکن است مطابقت داشته باشند تعامل پرچم از انجام این کار. هر الگوی
که با "-" شروع می شود باید از این طریق محافظت شود. (همه رشته ها با "-" شروع می شوند
برای گزینه های آینده محفوظ است.)

La -ره پرچم رشته را مجبور می کند تا به عنوان یک الگوی سبک regexp تفسیر شود. در این
در این مورد، زیر رشته های منطبق در متغیر ذخیره می شوند interact_out مشابه به
راه انتظار خروجی خود را در متغیر ذخیره می کند انتظار_بیرون. -شاخص ها پرچم است
به طور مشابه پشتیبانی می شود.

الگو اوف اقدامی را معرفی می کند که در انتهای فایل اجرا می شود. یک جدا
اوف الگو نیز ممکن است از آن پیروی کند -خروجی پرچم که در این صورت اگر یک eof مطابقت دارد
هنگام نوشتن خروجی شناسایی می شود. به طور پیش فرض اوف عمل "بازگشت" است، به طوری که
تعامل به سادگی بر روی هر EOF برمی گردد.

الگو فاصله تایم اوت (در ثانیه) و عملی را که اجرا می شود معرفی می کند
بعد از اینکه هیچ شخصیتی برای مدت معینی خوانده نشده است. را فاصله الگو اعمال می شود
آخرین فرآیند مشخص شده هیچ مهلت پیش‌فرضی وجود ندارد. خاص
متغیر "timeout" (استفاده شده توسط انتظار فرمان) هیچ تاثیری بر این زمان وقفه ندارد.

به عنوان مثال، عبارت زیر می تواند برای خروج خودکار کاربرانی که این کار را نکرده اند استفاده شود
هر چیزی را برای یک ساعت تایپ کرد اما هنوز هم پیام‌های سیستمی مکرر دریافت می‌کند:

interact -input $user_spawn_id timeout 3600 return -output
$pawn_id

اگر الگوی کلمه کلیدی باشد تهی، و null ها مجاز هستند (از طریق remove_nulls
فرمان)، بدن مربوطه اجرا می شود اگر یک ASCII 0 تطبیق داده شود. این است
تطبیق 0 بایت از طریق الگوهای glob یا regexp امکان پذیر نیست.

مقدمه یک الگو با پرچم -من می نویسم باعث متغیر می شود interact_out (spawn_id)
به spawn_id که با الگوی (یا eof) مطابقت دارد تنظیم شود.

اقداماتی مانند شکستن و ادامه دادن باعث ایجاد ساختارهای کنترلی (به عنوان مثال، برای, مجموعه مقالات) به
به روش معمول رفتار کنید با این حال برگشت باعث می شود که تعامل به تماس گیرنده خود بازگردد،
در حین inter_return علل تعامل تا باعث بازگشت در تماس گیرنده خود شود. به عنوان مثال، اگر
"proc foo" تماس گرفت تعامل که سپس عمل را اجرا کرد inter_return, مجموعه مقالات فو
برمی گشت. (این بدان معناست که اگر تعامل تماس مترجم تایپ تعاملی
برگشت باعث ادامه تعامل خواهد شد، در حالی که inter_return شود
تعامل کنید تا به تماس گیرنده خود بازگردد.)

در طی تعامل، حالت خام استفاده می شود تا همه کاراکترها به آن منتقل شوند
روند فعلی اگر فرآیند فعلی سیگنال‌های کنترل کار را نگیرد، می‌تواند
توقف در صورت ارسال سیگنال توقف (به طور پیش فرض ^Z). برای راه اندازی مجدد، یک سیگنال ادامه ارسال کنید
(مانند با "kill -CONT اگر واقعاً می خواهید یک SIGSTOP به چنین مکانی ارسال کنید
فرآیند (با ^Z)، ابتدا csh را در نظر بگیرید و سپس برنامه خود را اجرا کنید. در
از طرف دیگر، اگر می خواهید یک SIGSTOP را به انتظار می رود خود، ابتدا مترجم تماس بگیرید
(شاید با استفاده از یک کاراکتر فرار)، و سپس ^Z را فشار دهید.

جفت‌های بدنه رشته‌ای را می‌توان به‌عنوان خلاصه‌نویسی برای اجتناب از ورود به آن استفاده کرد
مفسر و اجرای دستورات به صورت تعاملی حالت ترمینال قبلی استفاده می شود
در حالی که بدنه یک جفت رشته بدنه در حال اجرا است.

برای سرعت، اقدامات به طور پیش فرض در حالت خام اجرا می شوند. در -تنظیم مجدد پرچم را بازنشانی می کند
ترمینال به حالتی که قبلا داشت تعامل اجرا شد (به طور ثابت، حالت پخته).
توجه داشته باشید که کاراکترهایی که هنگام تغییر حالت وارد می شوند ممکن است از بین بروند (یک
ویژگی تاسف بار درایور ترمینال در برخی از سیستم ها). تنها دلیل استفاده
-تنظیم مجدد اگر عمل شما به اجرای در حالت پخته بستگی دارد.

La -چه flag کاراکترهایی را که با الگوی زیر مطابقت دارند به فرآیند ارسال می کند
که با خواندن هر کاراکتر آنها را ایجاد می کند. این ممکن است زمانی مفید باشد که کاربر
نیاز به مشاهده بازخورد از الگوهای نیمه تایپ شده دارد.

اگر الگوی تکرار شود اما در نهایت مطابقت نداشته باشد، کاراکترها ارسال می شوند
به فرآیند تخم ریزی. اگر فرآیند تخم ریزی شده آنها را تکرار کند، کاربر می بیند
شخصیت ها دو بار -چه احتمالا فقط در شرایطی مناسب است که
بعید است کاربر الگو را کامل نکند. به عنوان مثال، گزیده زیر است
از rftp، اسکریپت بازگشتی-ftp، که در آن از کاربر خواسته می شود ~g، ~p یا
~l، برای دریافت، قرار دادن یا فهرست کردن دایرکتوری فعلی به صورت بازگشتی. اینا خیلی دورن
از دستورات معمولی ftp، که کاربر بعید است ~ و سپس آن را تایپ کند
هر چیز دیگری، به جز به اشتباه، در این صورت، آنها احتمالا فقط نادیده می گیرند
به هر حال نتیجه

تعامل داشتن {
-echo ~g {getcurdirectory 1}
-echo ~l {getcurdirectory 0}
-echo ~p {putcurdirectory}
}

La -بدون بافر flag کاراکترهایی را که با الگوی زیر مطابقت دارند را به
فرآیند خروجی همانطور که کاراکترها خوانده می شوند.

این زمانی مفید است که بخواهید به یک برنامه اجازه دهید الگو را بازتاب دهد. مثلا،
موارد زیر ممکن است برای نظارت بر جایی که یک فرد در حال شماره گیری است استفاده شود (به سبک هیز
مودم). هر بار که "atd" دیده می شود، اسکریپت بقیه خط را ثبت می کند.

شماره ورود به سیستم پروک {} {
interact -nobuffer -re "(.*)\r" بازگشت
$log را قرار می دهد "[قالب ساعت [ساعت ثانیه]]: شماره گیری شده $interact_out(1,string)"
}

interact -nobuffer "atd" lognumber

در طی تعامل، استفاده قبلی از log_user نادیده گرفته می شود. به خصوص، تعامل اراده
خروجی آن را مجبور به ثبت نام (ارسال به خروجی استاندارد) کنید زیرا فرض می شود
کاربر مایل به تعامل کورکورانه نیست.

La -o flag باعث می شود هر جفت کلید بدنه زیر در خروجی اعمال شود
روند فعلی این می تواند مفید باشد، برای مثال، در هنگام برخورد با میزبان هایی که ارسال می کنند
کاراکترهای ناخواسته در طول یک جلسه Telnet

به طور پیش فرض، تعامل انتظار دارد که کاربر در حال نوشتن stdin و خواندن stdout از
انتظار می رود خود فرآیند در -u پرچم (برای "کاربر") می سازد تعامل کاربر را به عنوان جستجو کنید
فرآیندی که توسط آرگومان آن نامگذاری شده است (که باید یک شناسه ایجاد شده باشد).

این اجازه می دهد تا دو فرآیند نامرتبط بدون استفاده از یک صریح به یکدیگر متصل شوند
حلقه برای کمک به اشکال‌زدایی، Expect diagnostics همیشه به stderr (یا stdout for) می‌رود
اطلاعات ثبت و اشکال زدایی خاص). به همین دلیل، مترجم
دستور به صورت تعاملی از stdin خوانده می شود.

به عنوان مثال، قطعه زیر یک فرآیند ورود ایجاد می کند. سپس کاربر را شماره گیری می کند
(نشان داده نشده)، و در نهایت این دو را به هم متصل می کند. البته، هر فرآیندی ممکن است باشد
جایگزین برای ورود به عنوان مثال، یک پوسته به کاربر اجازه می دهد بدون آن کار کند
ارائه یک حساب کاربری و رمز عبور

ورود تخم ریزی
ورود به سیستم $spawn_id را تنظیم کنید
مودم نوک تخم ریزی
# شماره گیری مجدد به کاربر
# اتصال کاربر به ورود
تعامل -u $login

برای ارسال خروجی به چندین فرآیند، فهرستی از هر فهرست شناسه تخم‌ریزی را با پیش‌گفتار a فهرست کنید -خروجی
پرچم. ورودی برای گروهی از شناسه های تخم ریزی خروجی ممکن است توسط فهرست شناسه تخم ریزی تعیین شود
پیشگفتار a -ورودی پرچم. (هر دو -ورودی و -خروجی ممکن است لیست هایی را به همان شکل دریافت کند
عنوان -i پرچم در انتظار دستور، با این تفاوت که any_spawn_id در آن معنی ندارد
تعامل.) همه پرچم ها و رشته ها (یا الگوهای) زیر روی این ورودی اعمال می شوند تا زمانی که
یک پرچم ورودی دیگر ظاهر می شود. اگر نه -ورودی ظاهر می شود، -خروجی به معنای "-input
$user_spawn_id -output". (به طور مشابه، با الگوهایی که ندارند -ورودی.) اگر
یک -ورودی مشخص شده است، $user_spawn_id را لغو می کند. اگر یک ثانیه -ورودی is
مشخص شده است، $spawn_id را لغو می کند. اضافی -ورودی ممکن است پرچم ها مشخص شود.

دو فرآیند ورودی ضمنی به طور پیش‌فرض خروجی‌های خود را به‌عنوان مشخص می‌کنند
$spawn_id و $user_spawn_id (برعکس). اگر یک -ورودی پرچم با شماره ظاهر می شود -خروجی
پرچم، کاراکترهای آن فرآیند حذف می شوند.

La -i flag جایگزینی برای spawn_id فعلی معرفی می‌کند، در حالی که دیگر وجود ندارد -ورودی
or -خروجی پرچم ها استفاده می شود. پرچم A -i به معنی پرچم -o است.

امکان تغییر فرآیندهایی که با استفاده از آنها در حال تعامل هستند، وجود دارد
شناسه تخم ریزی غیر مستقیم (شناسه های تخم ریزی غیر مستقیم در بخش انتظار توضیح داده شده است
دستور.) شناسه‌های تخم‌ریزی غیرمستقیم ممکن است با -i، -u، -input یا -output مشخص شوند.
پرچم ها

مترجم [ارگ]
باعث می شود که کاربر به صورت تعاملی درخواست شود انتظار می رود و دستورات Tcl در
نتیجه هر دستور چاپ می شود.

اقداماتی مانند شکستن و ادامه دادن باعث ایجاد ساختارهای کنترلی (به عنوان مثال، برای, مجموعه مقالات) به
به روش معمول رفتار کنید با این حال برگشت باعث می شود مترجم به تماس گیرنده خود بازگردد،
در حین inter_return علل مترجم تا باعث بازگشت در تماس گیرنده خود شود. مثلا،
اگر "proc foo" تماس گرفت مترجم که سپس عمل را اجرا کرد inter_return, مجموعه مقالات
فو برمی گشت. هر دستور دیگری باعث می شود مترجم برای ادامه درخواست
دستورات جدید

به طور پیش فرض، درخواست شامل دو عدد صحیح است. عدد صحیح اول عمق را توصیف می کند
از پشته ارزیابی (یعنی چند بار Tcl_Eval فراخوانی شده است). دومین
عدد صحیح شناسه تاریخچه Tcl است. اعلان را می توان با تعریف a تنظیم کرد
رویه ای به نام "prompt1" که مقدار بازگشتی آن به دستور بعدی تبدیل می شود. اگر یک
عبارت دارای نقل قول های باز، پرانتز، پرانتز، یا براکت، یک اعلان ثانویه (توسط
پیش فرض "+>") بر روی خط جدید صادر می شود. اعلان ثانویه ممکن است با تعریف تنظیم شود
رویه ای به نام "prompt2".

در طی مترجم، از حالت پخته استفاده می شود، حتی اگر تماس گیرنده آن از حالت خام استفاده کند.

اگر stdin بسته است، مترجم باز خواهد گشت مگر اینکه -eof پرچم استفاده می شود که در آن
در صورت استناد به آرگومان بعدی.

ورود به سیستم فایل [ارگ] [[-آ] فایل]
اگر نام فایل ارائه شده باشد، ورود به سیستم فایل رونوشت جلسه را ضبط خواهد کرد
(از آن نقطه شروع می شود) در فایل. ورود به سیستم فایل در صورت عدم وجود آرگومان، ضبط متوقف می شود
داده شده است. هر فایل لاگ قبلی بسته شده است.

به جای نام فایل، یک شناسه فایل Tcl ممکن است با استفاده از آن ارائه شود -باز کن or
-باز بزار پرچم ها این شبیه به تخم ریزی فرمان (دیدن تخم ریزی برای اطلاعات بیشتر.)

La -a پرچم خروجی را مجبور به ثبت نام می کند که توسط log_user فرمان

به طور پیشفرض، ورود به سیستم فایل فرمان ضمیمه می کند به جای کوتاه کردن فایل های قدیمی،
برای راحتی امکان خاموش و روشن کردن چندین بار در یک بار
جلسه برای کوتاه کردن فایل ها، از -نه اضافه پرچم.

La -اطلاعات flag باعث می شود log_file شرحی از جدیدترین غیر اطلاعات را برگرداند
استدلال های ارائه شده

log_user -info|0|1
به طور پیش‌فرض، گفتگوی send/expect در stdout ثبت می‌شود (و در صورت باز بودن یک logfile).
ورود به stdout با دستور "log_user 0" غیرفعال شده و مجدداً توسط
"log_user 1". ورود به logfile بدون تغییر است.

La -اطلاعات flag باعث می‌شود log_user شرحی از جدیدترین غیر اطلاعات را برگرداند
استدلال های ارائه شده

match_max [-d] [-من spawn_id] [اندازه]
اندازه بافر (بر حسب بایت) مورد استفاده داخلی توسط انتظار. با هیچ اندازه
آرگومان، اندازه فعلی برگردانده می شود.

با -d پرچم، اندازه پیش فرض تنظیم شده است. (پیش فرض اولیه 2000 است.) با
-i flag، اندازه برای شناسه spawn نامگذاری شده تنظیم شده است، در غیر این صورت برای جریان تنظیم شده است
روند.

پوشش [-# spawn_id] [-# spawn_id] [...] برنامه [ارگ]
اجرا می کند برنامه قوس به جای جریان انتظار می رود برنامه ای که پایان می یابد. آ
آرگومان bare hyphen یک خط فاصله را در مقابل نام دستور قرار می دهد که گویی یک خط فاصله است
پوسته ورود به سیستم. همه spawn_id ها بسته هستند به جز مواردی که به عنوان آرگومان نامگذاری شده اند. اینها
بر روی شناسه های فایل نامگذاری شده نگاشت می شوند.

Spawn_id ها به شناسه های فایل برای به ارث بردن برنامه جدید نگاشت می شوند. برای
به عنوان مثال، خط زیر شطرنج را اجرا می کند و اجازه می دهد تا توسط جریان کنترل شود
روند - می گویند، یک استاد شطرنج.

پوشش -0 $spawn_id -1 $spawn_id -2 $spawn_id شطرنج

این کارآمدتر از "تعامل -u" است، با این حال، توانایی انجام آن را قربانی می کند
تعامل برنامه ریزی شده از زمان انتظار می رود روند دیگر تحت کنترل نیست

توجه داشته باشید که هیچ ترمینال کنترلی ارائه نشده است. بنابراین، در صورت قطع یا نقشه مجدد
ورودی استاندارد، برنامه هایی که کنترل کار را انجام می دهند (شل، ورود و غیره) کار نمی کنند
به درستی.

برابری [-d] [-من spawn_id] [ارزش]
تعیین می کند که آیا برابری باید حفظ شود یا از خروجی تخم ریزی حذف شود
فرآیندها اگر ارزش صفر است، برابری حذف می شود، در غیر این صورت پاک نمی شود.
با هیچ ارزش آرگومان، مقدار فعلی برگردانده می شود.

با -d flag، مقدار برابری پیش‌فرض تنظیم شده است. (پیش فرض اولیه 1 است، به عنوان مثال،
برابری از بین نمی رود.) با -i flag، مقدار برابری برای نامگذاری شده تنظیم شده است
spawn id، در غیر این صورت برای فرآیند فعلی تنظیم شده است.

remove_nulls [-d] [-من spawn_id] [ارزش]
مشخص می کند که آیا تهی ها حفظ می شوند یا از خروجی فرآیندهای ایجاد شده حذف می شوند
قبل از تطبیق الگو یا ذخیره در متغیر انتظار_بیرون or interact_out. اگر
ارزش 1 است، تهی ها حذف می شوند. اگر ارزش 0 است، تهی ها حذف نمی شوند. با هیچ ارزش
آرگومان، مقدار فعلی برگردانده می شود.

با -d پرچم، مقدار پیش فرض تنظیم شده است. (پیش‌فرض اولیه 1 است، یعنی nulls
حذف می شوند.) با -i flag، مقدار برای شناسه spawn نامگذاری شده تنظیم می شود، در غیر این صورت
برای فرآیند فعلی تنظیم شده است.

خواه تهی ها حذف شوند یا نه، انتظار می رود بایت های تهی را در لاگ و ثبت می کند
stdout.

ارسال [-پرچم ها] رشته
می فرستد رشته به روند فعلی مثلا دستور

ارسال "سلام جهان\r"

شخصیت ها را می فرستد، سلام جهان به روند فعلی
(Tcl شامل یک دستور printf مانند (به نام قالب) که می تواند خودسرانه بسازد
رشته های پیچیده.)

کاراکترها فورا ارسال می شوند، اگرچه برنامه هایی با ورودی خط بافر ارسال نمی شوند
کاراکترها را بخوانید تا زمانی که یک کاراکتر بازگشتی ارسال شود. یک کاراکتر بازگشتی نشان داده می شود
"\r".

La -- flag آرگومان بعدی را مجبور می کند که به جای a به عنوان یک رشته تفسیر شود
پرچم. هر رشته ای می تواند قبل از "--" باشد، خواه واقعاً شبیه a باشد یا نباشد
پرچم. این یک مکانیسم قابل اعتماد برای تعیین رشته های متغیر بدون وجود فراهم می کند
توسط کسانی که به طور تصادفی شبیه پرچم هستند، زمین خورده است. (همه رشته ها با
"-" برای گزینه های آینده محفوظ است.)

La -i flag اعلام می کند که رشته به نام spawn_id ارسال می شود. اگر spawn_id
is user_spawn_id، و ترمینال در حالت خام است، خطوط جدید در رشته هستند
به دنباله های بازگشت-خط جدید ترجمه می شود به طوری که به نظر می رسد که ترمینال در داخل است
حالت پخته در -خام flag این ترجمه را غیرفعال می کند.

La -خالی پرچم کاراکترهای تهی (0 بایت) را ارسال می کند. به طور پیش فرض یک عدد تهی ارسال می شود. یک
عدد صحیح ممکن است به دنبال آن باشد -خالی برای نشان دادن تعداد تهی برای ارسال.

La -زنگ تفريح flag یک شرط استراحت ایجاد می کند. این تنها در صورتی معنا پیدا می کند که شناسه تخم ریزی
به یک دستگاه tty باز شده از طریق "spawn -open" اشاره دارد. اگر شما چنین فرآیندی را ایجاد کرده اید
به عنوان نکته، باید از قرارداد نوک برای ایجاد استراحت استفاده کنید.

La -s پرچم خروجی را مجبور به ارسال "آهسته" می‌کند، بنابراین از موقعیت معمولی که در آن وجود دارد اجتناب کنید
یک کامپیوتر از یک بافر ورودی که برای انسانی طراحی شده بود که هرگز این کار را انجام نمی دهد، پیشی می گیرد
از همان بافر پیشی بگیرید. این خروجی توسط مقدار متغیر کنترل می شود
"send_slow" که یک لیست دو عنصری را می گیرد. اولین عنصر یک عدد صحیح است که
تعداد بایت هایی که باید به صورت اتمی ارسال شوند را توصیف می کند. عنصر دوم واقعی است
عددی که تعداد ثانیه هایی را که اتمی باید ارسال کند را توصیف می کند
جدا از هم. به عنوان مثال، "set send_slow {10 .001}" "send -s" را مجبور به ارسال می کند.
رشته هایی با 1 میلی ثانیه بین هر 10 کاراکتر ارسالی.

La -h پرچم خروجی را مجبور می کند (تا حدودی) مانند یک انسان در حال تایپ کردن ارسال شود.
تاخیرهایی شبیه انسان بین شخصیت ها ظاهر می شود. (الگوریتم بر اساس الف است
توزیع Weibull، با تغییراتی متناسب با این برنامه خاص.) این
خروجی توسط مقدار متغیر "send_human" کنترل می شود که پنج می گیرد
لیست عناصر دو عنصر اول میانگین زمان بین ورود کاراکترها هستند
ثانیه اولین مورد به طور پیش فرض استفاده می شود. دومی در انتهای کلمات، به استفاده می شود
مکث های ظریفی را که گاهی در چنین انتقالی رخ می دهد، شبیه سازی کنید. سومین
پارامتر معیاری برای تغییرپذیری است که در آن 1 کاملاً متغیر است، 1 به طور منطقی است
متغیر، و 10 کاملاً متغیر است. افراط از 0 تا بی نهایت است. دو مورد آخر
پارامترها به ترتیب حداقل و حداکثر زمان بین ورود هستند. حداقل
و حداکثر در آخر استفاده می شوند و زمان نهایی "کلیپ" می شوند. میانگین نهایی می تواند باشد
اگر حداقل و حداکثر کلیپ کافی باشد، با میانگین داده شده کاملاً متفاوت است
ارزش ها.

به عنوان مثال، دستور زیر یک تایپیست سریع و ثابت را شبیه سازی می کند:

مجموعه send_human {.1 .3 1 05}
send -h "من گرسنه هستم. بیا ناهار را انجام دهیم."

در حالی که موارد زیر ممکن است پس از خماری مناسب تر باشند:

set_send_human {.4 .4 2}
send -h "شب شلاق مهمانی بخیر!"

توجه داشته باشید که خطاها شبیه سازی نمی شوند، اگرچه می توانید تصحیح خطا را تنظیم کنید
با قرار دادن اشتباهات و اصلاحات در یک آرگومان ارسال، موقعیت های خود را تعیین می کند.

پرچم هایی برای ارسال کاراکترهای پوچ، برای ارسال استراحت، برای اجبار کردن خروجی آهسته
و برای خروجی به سبک انسان متقابل هستند. فقط یک مورد مشخص شده آخرین وصیت می کند
مورد استفاده قرار گیرد. علاوه بر این، نه رشته آرگومان را می توان با پرچم های ارسال مشخص کرد
کاراکترهای پوچ یا شکست.

این ایده خوبی است که قبل از اول باشد ارسال به یک فرآیند توسط یک انتظار. انتظار اراده
صبر کنید تا فرآیند شروع شود، در حالی که ارسال نمی تواند به ویژه، اگر اولین ارسال
قبل از شروع فرآیند تکمیل شود، شما در معرض خطر داشتن داده های خود هستید
نادیده گرفته شده است. در شرایطی که برنامه های تعاملی هیچ درخواست اولیه ای ارائه نمی دهند، می توانید
قبل ارسال با تاخیر مانند:

# برای جلوگیری از دادن راهنمایی به هکرها در مورد نحوه نفوذ،
# این سیستم رمز عبور خارجی را درخواست نمی کند.
# 5 ثانیه صبر کنید تا exec کامل شود
تخم ریزی telnet very.secure.gov
خواب 5
ارسال رمز\r

exp_send نام مستعار برای است ارسال. اگر از Expectk یا نوع دیگری از آن استفاده می کنید
انتظار در محیط Tk، ارسال توسط Tk برای یک کاملا متفاوت تعریف شده است
هدف exp_send برای سازگاری بین محیط ها ارائه شده است. مشابه
نام مستعار برای دیگر دستورات ارسال Expect ارائه شده است.

send_error [-پرچم ها] رشته
مثل این است ارسال، با این تفاوت که خروجی به جای جریان به stderr ارسال می شود
روند.

send_log [-] رشته
مثل این است ارسال، با این تفاوت که رشته فقط به فایل گزارش ارسال می شود (نگاه کنید به ورود به سیستم فایل.)
اگر هیچ فایل گزارشی باز نباشد، آرگومان ها نادیده گرفته می شوند.

send_tty [-پرچم ها] رشته
مثل این است ارسال، با این تفاوت که خروجی به جای جریان به /dev/tty ارسال می شود
روند.

send_user [-پرچم ها] رشته
مثل این است ارسال، با این تفاوت که خروجی به جای جریان به stdout ارسال می شود
روند.

خواب ثانیه
باعث می شود که اسکریپت برای تعداد ثانیه های معین بخوابد. ثانیه ها ممکن است a
عدد اعشاری. وقفه ها (و رویدادهای Tk اگر از Expectk استفاده می کنید) پردازش می شوند
در حالی که انتظار می خوابد.

تخم ریزی [ارگ] برنامه [ارگ]
یک فرآیند جدید در حال اجرا ایجاد می کند برنامه قوس. stdin، stdout و stderr آن هستند
به Expect متصل است، به طوری که آنها می توانند توسط دیگران خوانده و نوشته شوند انتظار می رود دستورات
اتصال قطع شده است نزدیک یا اگر فرآیند خود هر یک از فایل ها را ببندد
شناسه ها

زمانی که فرآیندی توسط تخم ریزی، متغیر spawn_id روی یک توصیفگر تنظیم شده است
با اشاره به آن فرآیند فرآیندی که توسط spawn_id در نظر گرفته شده است
جاری روند. spawn_id ممکن است خوانده یا نوشته شود که در واقع کنترل شغل را فراهم می کند.

user_spawn_id یک متغیر سراسری حاوی یک توصیفگر است که به کاربر اشاره دارد.
به عنوان مثال، وقتی spawn_id روی این مقدار تنظیم شده است، انتظار مانند رفتار می کند expect_user.

error_spawn_id یک متغیر سراسری است که حاوی یک توصیفگر است که به
خطای استاندارد. مثلاً وقتی spawn_id روی این مقدار تنظیم شده است، ارسال مانند رفتار می کند
send_error.

tty_spawn_id یک متغیر سراسری حاوی یک توصیفگر است که به /dev/tty اشاره دارد.
اگر /dev/tty وجود نداشته باشد (مانند اسکریپت cron، at یا دسته ای)، پس
tty_spawn_id تعریف نشده است. این ممکن است به صورت زیر آزمایش شود:

اگر {[info vars tty_spawn_id]} {
# /dev/tty وجود دارد
} دیگری {
# /dev/tty وجود ندارد
# احتمالاً در cron، دسته ای یا در اسکریپت
}

تخم ریزی شناسه فرآیند یونیکس را برمی گرداند. اگر هیچ فرآیندی ایجاد نشود، 0 برگردانده می شود. در
متغیر spawn_out (برده، نام) به نام دستگاه برده pty تنظیم شده است.

به طور پیش فرض، تخم ریزی نام فرمان و آرگومان ها را بازتاب می دهد. در -noecho پرچم متوقف می شود
تخم ریزی از انجام این کار

La -کنسول flag باعث می‌شود خروجی کنسول به فرآیند تخم‌گذاری هدایت شود.
این در همه سیستم ها پشتیبانی نمی شود.

در داخل ، تخم ریزی از یک pty استفاده می کند که به همان روش tty کاربر مقداردهی اولیه شده است. این هست
بیشتر مقدار دهی اولیه می شود تا همه تنظیمات "عاقلانه" باشند (مطابق با استی(1)). اگر
متغیر stty_init تعریف شده است، به سبک استدلال های stty به عنوان تفسیر می شود
پیکربندی بیشتر به عنوان مثال، "set stty_init raw" باعث تولید بیشتر می شود
پایانه های فرآیندها برای شروع در حالت خام. -نسخه ای از مقداردهی اولیه می گذرد
بر اساس tty کاربر. -بی خبر از مقداردهی اولیه "عاقلانه" می گذرد.

به طور معمول، تخم ریزی زمان کمی برای اجرا نیاز دارد. اگر متوجه تخم‌ریزی شدید
در مدت زمان قابل توجهی، احتمالاً با ptys هایی مواجه می شود که گوه ای دارند. آ
تعدادی تست روی ptys اجرا می شود تا از درهم تنیدگی با فرآیندهای اشتباه جلوگیری شود.
(اینها 10 ثانیه به ازای هر قطعه گوه ای طول می کشد.) در حال دویدن Expect with the -d گزینه نشان داده خواهد شد
if انتظار می رود در حالات فرد با بسیاری از ptys مواجه می شود. اگر نمی توانید فرآیندها را از بین ببرید
که این ptys به آن متصل است، تنها راه شما ممکن است راه اندازی مجدد باشد.

If برنامه نمی توان با موفقیت تخم ریزی کرد زیرا exec(2) شکست می خورد (مثلاً وقتی برنامه
وجود ندارد)، یک پیغام خطا تا بعدی برگردانده خواهد شد تعامل or انتظار
طوری فرمان دهید که گویی برنامه اجرا شده بود و پیام خطا را به عنوان خروجی تولید می کرد. این
رفتار نتیجه طبیعی اجرای تخم ریزی. در داخل، تخم ریزی کنید
چنگال ها، پس از آن فرآیند تخم ریزی شده راهی برای ارتباط با اصلی ندارد
انتظار می رود فرآیند به جز از طریق ارتباط از طریق spawn_id.

La -باز کن flag باعث می شود که آرگومان بعدی به عنوان شناسه فایل Tcl تفسیر شود
(یعنی توسط باز کن.) سپس می‌توان از شناسه تخم‌ریزی به‌گونه‌ای استفاده کرد که انگار یک تخمگذاری شده است
روند. (از شناسه فایل دیگر نباید استفاده شود.) این به شما امکان می دهد خام را درمان کنید
دستگاه‌ها، فایل‌ها و خطوط لوله به‌عنوان فرآیندهای ایجاد شده بدون استفاده از pty. 0 است
بازگشت برای نشان دادن اینکه هیچ فرآیند مرتبطی وجود ندارد. هنگامی که اتصال به
فرآیند spawned بسته شده است، شناسه فایل Tcl نیز بسته است. را -باز بزار پرچم است
مشابه -باز کن غیر از آن -باز بزار باعث می شود شناسه فایل باز بماند
حتی پس از بسته شدن شناسه تخم ریزی.

La -پتی flag باعث می شود یک pty باز شود اما هیچ فرآیندی ایجاد نشود. 0 به
نشان می دهد که هیچ فرآیند مرتبطی وجود ندارد. Spawn_id طبق معمول تنظیم شده است.

متغیر spawn_out (slave,fd) به یک شناسه فایل مربوط به تنظیم شده است
غلام پوچ می توان آن را با استفاده از "close -slave" بسته کرد.

La -چشم پوشی flag سیگنالی را نام می‌برد که باید در فرآیند تخم‌ریزی نادیده گرفته شود. در غیر این صورت،
سیگنال ها رفتار پیش فرض را دریافت می کنند. سیگنال ها مانند در نامگذاری می شوند دام فرمان، به جز
که هر سیگنال نیاز به یک پرچم جداگانه دارد.

تسمه سطح
باعث می شود دستورات زیر قبل از اجرا چاپ شوند. (ردپای Tcl
دستور ردیابی متغیرها.) سطح نشان می دهد که چقدر در پشته تماس برای ردیابی است.
برای مثال دستور زیر اجرا می شود انتظار می رود در حالی که ردیابی 4 سطح اول از
تماس می گیرد، اما هیچ کدام زیر آن.

انتظار -c "strace 4" script.exp

La -اطلاعات flag باعث می شود که strace شرحی از جدیدترین غیر اطلاعات را برگرداند
استدلال های ارائه شده

استی قوس
حالت های ترمینال را مشابه دستور stty خارجی تغییر می دهد.

به طور پیش فرض، ترمینال کنترل قابل دسترسی است. ترمینال های دیگر قابل دسترسی هستند
با اضافه کردن "< /dev/tty..." به دستور. (توجه داشته باشید که استدلال ها نباید باشند
در یک آرگومان واحد گروه بندی شده است.)

درخواست های وضعیت آن را به عنوان نتیجه دستور برمی گرداند. در صورت عدم وجود وضعیت
درخواست و دسترسی به ترمینال کنترل، وضعیت قبلی خام است
و صفات echo به شکلی برگردانده می شوند که بعداً می تواند توسط دستور مورد استفاده قرار گیرد.

به عنوان مثال، استدلال ها خام or -پخته ترمینال را در حالت خام قرار دهید. در
استدلال -خام or پخته شده ترمینال را در حالت پخت قرار دهید. استدلال ها از دست و
-چه ترمینال را به ترتیب در حالت echo و noecho قرار دهید.

مثال زیر نحوه غیرفعال کردن موقت اکو را نشان می دهد. میتواند اینطور باشد که
در اسکریپت های غیر خودکار برای جلوگیری از تعبیه رمز عبور در آنها استفاده می شود. (بیشتر ببین
بحث در این مورد در زیر EXPECT HINTS زیر.)

stty -echo
send_user "رمز عبور:"
expect_user -re "(.*)\n"
تنظیم رمز عبور $expect_out (1، رشته)
اکو stty

سیستم قوس
می دهد قوس به sh(1) به عنوان ورودی، درست مثل اینکه به عنوان دستوری از a تایپ شده باشد
پایانه. انتظار می رود منتظر می ماند تا پوسته پایان یابد. وضعیت بازگشت از sh است
به همان روشی رفتار کرد که exec وضعیت بازگشت آن را کنترل می کند.

در مقابل exec که stdin و stdout را به اسکریپت هدایت می کند، سیستم انجام می دهد
بدون تغییر مسیر (به غیر از آنچه که توسط خود رشته نشان داده شده است). بنابراین، آن است
امکان استفاده از برنامه هایی که باید مستقیماً با /dev/tty صحبت کنند. به همان دلیل،
نتایج حاصل از سیستم در لاگ ثبت نمی شوند.

برچسب زمان [ارگ]
یک مهر زمانی برمی گرداند. بدون هیچ استدلالی، تعداد ثانیه هایی که از آن دوران می گذرد است
برگشت

La قالب flag رشته ای را معرفی می کند که برگردانده می شود اما با تعویض هایی انجام شده است
طبق قوانین POSIX برای strftime. به عنوان مثال %a با an جایگزین می شود
نام مختصر روز هفته (یعنی Sat). دیگران عبارتند از:
%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)
%p صبح یا بعد از ظهر
%S ثانیه (00-61)
%u روز (1-7، دوشنبه اولین روز هفته است)
%U هفته (00-53، اولین یکشنبه اولین روز هفته اول است)
%V هفته (01-53، سبک ISO 8601)
%w روز (0-6)
%W هفته (00-53، اولین دوشنبه اولین روز هفته اول است)
%x تاریخ-زمان در: چهارشنبه 6 اکتبر 1993
%X زمان مانند: 23:59:59
%y سال (00-99)
%Y سال مانند: 1993
%Z منطقه زمانی (یا هیچ چیز اگر قابل تعیین نباشد)
%% علامت درصد خالی

سایر مشخصات % تعریف نشده است. شخصیت های دیگر نیز از طریق آنها منتقل خواهد شد
دست نخورده فقط زبان C پشتیبانی می شود.

La -ثانیه پرچم چند ثانیه از دوران را معرفی می کند تا به عنوان یک استفاده شود
منبعی که از آن فرمت شود در غیر این صورت از زمان فعلی استفاده می شود.

La -gmt پرچم خروجی مهر زمانی را مجبور به استفاده از منطقه زمانی GMT ​​می کند. بدون پرچم،
منطقه زمانی محلی استفاده می شود.

دام [[فرمان] سیگنال ها]
باعث داده شده است فرمان پس از دریافت هر یک از موارد داده شده در آینده اجرا می شود
سیگنال ها دستور در محدوده جهانی اجرا می شود. اگر فرمان غایب است،
کنش سیگنال برگردانده می شود. اگر فرمان رشته SIG_IGN است، سیگنال ها هستند
نادیده گرفته شده است. اگر فرمان رشته SIG_DFL است، سیگنال ها به سیستم منتج می شوند
به طور پیش فرض سیگنال یا یک سیگنال واحد است یا لیستی از سیگنال ها. سیگنال ها ممکن است باشد
به صورت عددی یا نمادین مطابق با مشخص شده است سیگنال(3). پیشوند "SIG" ممکن است باشد
حذف شده است.

بدون آرگومان (یا آرگومان -number)، دام شماره سیگنال را برمی گرداند
دستور trap در حال اجرا است.

La کد flag از کد بازگشتی دستور به جای هر کدی که Tcl بود استفاده می کند
زمانی که فرمان در ابتدا شروع به اجرا کرد در شرف بازگشت است.

La - interp flag باعث می شود که دستور با استفاده از مفسر فعال در ارزیابی شود
زمان شروع اجرای فرمان به جای زمانی که تله اعلام شد.

La -سیب زمینی شیرین پرچم باعث می شود دام دستور برای برگرداندن نام سیگنال فرمان trap
در حال حاضر در حال اجرا

La -حداکثر پرچم باعث می شود دام دستور برگرداندن بزرگترین عدد سیگنالی که می تواند
تنظیم شود.

به عنوان مثال، دستور "trap {send_user "Ouch!"} SIGINT" "اوخ!" هر یک
زمانی که کاربر ^C را فشار می دهد.

به طور پیش فرض، SIGINT (که معمولاً با فشار دادن ^C ایجاد می شود) و SIGTERM باعث می شود
انتظار خروج را داشته باشید. این به دلیل تله زیر است که به طور پیش فرض در هنگام Expect ایجاد می شود
شروع می شود

خروج تله {SIGINT SIGTERM}

اگر از پرچم -D برای شروع دیباگر استفاده می کنید، SIGINT برای شروع دوباره تعریف می شود
اشکال زدای تعاملی این به دلیل تله زیر است:

تله {exp_debug 1} SIGINT

تله دیباگر را می توان با تنظیم متغیر محیطی تغییر داد
EXPECT_DEBUG_INIT به یک فرمان دام جدید.

البته می‌توانید هر دوی این موارد را فقط با افزودن دستورات دام به خود لغو کنید
اسکریپت به‌ویژه، اگر «Trap exit SIGINT» خود را دارید، این مورد لغو می‌شود
تله دیباگر اگر می خواهید از دسترسی کاربران به آن جلوگیری کنید، این کار مفید است
اصلا دیباگر

اگر می‌خواهید تله خود را در SIGINT تعریف کنید، اما همچنان به دام اشکال‌زدا می‌افتید
در حال اجرا است، استفاده کنید:

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

از طرف دیگر، می‌توانید با استفاده از سیگنال دیگری به دیباگر متصل شوید.

دام به شما اجازه نمی دهد که عمل SIGALRM را نادیده بگیرید زیرا از آن به صورت داخلی استفاده می شود
انتظار می رود. دستور disconnect SIGALRM را روی SIG_IGN تنظیم می کند (نادیده گرفتن). می توانید دوباره فعال کنید
این تا زمانی که آن را در طی دستورات تخم ریزی بعدی غیرفعال کنید.

دیدن سیگنال(3) برای اطلاعات بیشتر

صبر کنيد [ارگ]
به تأخیر می افتد تا زمانی که یک فرآیند تخم ریزی شده (یا فرآیند فعلی اگر نامی نداشته باشد) خاتمه یابد.

صبر کنيد به طور معمول لیستی از چهار عدد صحیح را برمی گرداند. اولین عدد صحیح pid از است
فرآیندی که منتظر بود عدد صحیح دوم شناسه تخم ریزی مربوطه است.
سومین عدد صحیح در صورت بروز خطای سیستم عامل -1 یا در غیر این صورت 0 است. اگر
عدد صحیح سوم 0 بود، عدد صحیح چهارم وضعیتی است که توسط تخم ریزی شده برگردانده شده است
روند. اگر سومین عدد صحیح -1 بود، عدد صحیح چهارم مقدار مجموعه errno است
توسط سیستم عامل متغیر سراسری errorCode نیز تنظیم شده است.

عناصر اضافی ممکن است در انتهای مقدار بازگشتی از ظاهر شوند صبر کنيد، در
عنصر پنجم اختیاری دسته ای از اطلاعات را مشخص می کند. در حال حاضر، تنها
مقدار ممکن برای این عنصر CHILDKILLED است که در این صورت دو مقدار بعدی هستند
نام سیگنال به سبک C و توضیحات متنی کوتاه.

La -i flag فرآیند منتظر بودن را مطابق با spawn_id نامگذاری شده اعلام می کند (NOT
شناسه فرآیند). در یک کنترلر SIGCHLD، می توان منتظر هر گونه تخم ریزی شد
با استفاده از spawn id -1 پردازش کنید.

La -حالا صبر کن flag باعث می شود که انتظار بلافاصله با علامت a برگردد
انتظار موفق هنگامی که فرآیند (بعداً) خارج می شود، به طور خودکار ناپدید می شود
بدون نیاز به انتظار صریح

La صبر کنيد دستور همچنین ممکن است برای یک فرآیند فورک شده با استفاده از آرگومان های "-i" استفاده شود
-1". برخلاف استفاده از آن در فرآیندهای ایجاد شده، این دستور در هر زمانی قابل اجرا است
زمان. هیچ کنترلی بر اینکه کدام فرآیند درو می شود وجود ندارد. با این حال، مقدار بازگشتی
را می توان برای شناسه فرآیند بررسی کرد.

کتابخانه ها


Expect به طور خودکار در مورد دو کتابخانه داخلی برای اسکریپت های Expect می داند. اینها هستند
توسط دایرکتوری های نامگذاری شده در متغیرهای exp_library و exp_exec_library تعریف شده است. هر دو
به معنای حاوی فایل های ابزاری هستند که می توانند توسط اسکریپت های دیگر استفاده شوند.

exp_library حاوی فایل های مستقل از معماری است. exp_exec_library شامل
فایل های وابسته به معماری بسته به سیستم شما، هر دو فهرست ممکن است کاملاً باشند
خالی. وجود فایل $exp_exec_library/cat-buffers توضیح می دهد که آیا شما
/bin/cat بافرها به صورت پیش فرض

چاپ زیبا


یک تعریف vgrind برای چاپ زیبا در دسترس است انتظار می رود اسکریپت ها با فرض vgrind
تعریف ارائه شده با انتظار می رود توزیع به درستی نصب شده است، می توانید از آن استفاده کنید
عنوان:

فایل vgrind -lexpect

مثال ها


خیلی ها مشخص نیستند که چگونه همه چیزهایی را که صفحه اصلی توضیح می دهد کنار هم قرار دهیم. من
شما را تشویق می کند که نمونه های موجود در فهرست راهنمای نمونه را بخوانید و امتحان کنید انتظار می رود
توزیع برخی از آنها برنامه های واقعی هستند. برخی دیگر به سادگی بیانگر برخی موارد هستند
تکنیک ها، و البته، یک زوج فقط هک های سریع هستند. فایل INSTALL سریع است
مروری بر این برنامه ها

La انتظار می رود مقالات (همچنین ببینید) نیز مفید هستند. در حالی که برخی از مقالات از نحو استفاده می کنند
مطابق با نسخه های قبلی Expect، دلایل منطقی همراه هنوز معتبر هستند
و وارد جزئیات بسیار بیشتر از این صفحه مرد شوید.

هشدارها


برنامه های افزودنی ممکن است با نام دستورات Expect برخورد کنند. مثلا، ارسال توسط Tk تعریف شده است
برای یک هدف کاملا متفاوت به همین دلیل، اکثر انتظار می رود دستورات نیز هستند
در دسترس به عنوان "exp_XXXX". دستورات و متغیرهایی که با "exp"، "inter"، "spawn" شروع می‌شوند.
و "timeout" نام مستعار ندارند. در صورت نیاز از نام دستورهای توسعه یافته استفاده کنید
سازگاری بین محیط ها

انتظار می رود دیدگاهی نسبتا لیبرال از محدوده بندی دارد. به طور خاص، متغیرها توسط دستورات خوانده می شوند
خاص به انتظار می رود برنامه ابتدا از محدوده محلی جستجو می شود و اگر نه
در گستره جهانی یافت شد. به عنوان مثال، این نیاز به قرار دادن "تایم اوت جهانی" را برطرف می کند.
در هر رویه ای که می نویسید که استفاده می کند انتظار. از سوی دیگر، متغیرهای نوشته شده هستند
همیشه در محدوده محلی (مگر اینکه یک فرمان "جهانی" صادر شده باشد). شایع ترین
مشکلی که باعث می شود زمانی است که spawn در یک رویه اجرا می شود. خارج از روش،
spawn_id دیگر وجود ندارد، بنابراین فرآیند تخم ریزی شده دیگر به سادگی قابل دسترسی نیست
محدوده. یک " spawn_id جهانی " را به چنین رویه ای اضافه کنید.

اگر نمی توانید قابلیت Multispawning را فعال کنید (یعنی سیستم شما هیچ کدام را پشتیبانی نمی کند
را انتخاب کنید (BSD *.*)، نظرسنجی (SVR>2)، و نه چیزی معادل)، انتظار می رود فقط قادر خواهد بود
کنترل یک فرآیند واحد در یک زمان در این مورد، سعی نکنید تنظیم کنید spawn_id، نه
آیا باید فرآیندها را از طریق exec اجرا کنید در حالی که یک فرآیند تخم ریزی شده در حال اجرا است. علاوه بر این،
شما قادر نخواهید بود انتظار از چندین فرآیند (از جمله کاربر به عنوان یک) در
همان زمان.

پارامترهای ترمینال می توانند تأثیر زیادی روی اسکریپت ها داشته باشند. مثلاً اگر یک اسکریپت نوشته شده باشد
برای جستجوی پژواک، اگر پژواک خاموش شود، رفتار نادرست خواهد داشت. به همین دلیل، انتظار
به طور پیش فرض پارامترهای ترمینال سالم را مجبور می کند. متأسفانه، این می تواند چیزهایی را ایجاد کند
برای برنامه های دیگر ناخوشایند است. به عنوان مثال، پوسته emacs می خواهد "معمول" را تغییر دهد.
نگاشت: خطوط جدید به جای خطوط جدید کالسکه-بازگشت به خطوط جدید نگاشت می شوند و بازتاب می یابند.
از کار افتاده است. این به شخص اجازه می دهد تا از emacs برای ویرایش خط ورودی استفاده کند. متأسفانه، انتظار
نمی توان این را حدس زد

می‌توانید درخواست کنید که Expect تنظیمات پیش‌فرض پارامترهای ترمینال را لغو نکند، اما
پس باید هنگام نوشتن اسکریپت برای چنین محیط هایی بسیار مراقب باشید. در شرایطی که
emacs، از وابستگی به چیزهایی مانند پژواک و نگاشت انتهای خط خودداری کنید.

دستوراتی که آرگومان‌ها را می‌پذیرفتند در یک لیست واحد قرار می‌گیرند (the انتظار انواع و
تعامل) از یک اکتشافی برای تصمیم گیری در مورد اینکه آیا لیست در واقع یک آرگومان است یا چند آرگومان استفاده کنید. در
اکتشافی فقط در صورتی می تواند شکست بخورد که لیست واقعاً یک واحد را نشان دهد
آرگومان که دارای چندین \n جاسازی شده با کاراکترهای بدون فاصله بین آنهاست.
این به اندازه کافی غیر محتمل به نظر می رسد، با این حال می توان از استدلال "-nobrace" برای اجبار a استفاده کرد
آرگومان واحد به عنوان یک آرگومان واحد در نظر گرفته شود. این قابل تصور می تواند با استفاده شود
کد انتظار تولید شده توسط ماشین به طور مشابه، -brace یک آرگومان واحد را مجبور می‌کند تا به‌عنوان مدیریت شود
الگوها/عمل های متعدد

با استفاده از خدمات onworks.net از انتظار آنلاین استفاده کنید



جدیدترین برنامه های آنلاین لینوکس و ویندوز