Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

oczekiwać - Online w chmurze

Uruchom oczekiwanie w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

Jest to polecenie, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


oczekiwać - zaprogramowany dialog z programami interaktywnymi, wersja 5

STRESZCZENIE


oczekiwać [ -dDinN ] [ -c cmds ] [ [ -[f|b] ] plik cmd ] [ args ]

WPROWADZENIE


Oczekiwać to program, który „rozmawia” z innymi interaktywnymi programami zgodnie ze skryptem.
Zgodnie ze scenariuszem, Oczekiwać wie, czego można się spodziewać po programie i jakie
powinna być prawidłowa odpowiedź. Język interpretowany zapewnia rozgałęzienie i wysoki poziom
struktury kontrolne kierujące dialogiem. Ponadto użytkownik może przejąć kontrolę i
w razie potrzeby wchodź w interakcję bezpośrednio, a następnie zwróć kontrolę nad skryptem.

Oczekuj jest mieszanką Oczekiwać i Tk. Zachowuje się podobnie Oczekiwać i Tk's chcieć. Oczekiwać
można również używać bezpośrednio w C lub C++ (to znaczy bez Tcl). Widzieć libexpect(3).

Nazwa „Oczekiwać” wzięła się z idei wyślij/oczekuj sekwencje spopularyzowane przez uucp, kermit
i inne programy sterujące modemem. Jednak w przeciwieństwie do uucp, Oczekiwać jest uogólnione tak, że
można uruchomić jako polecenie na poziomie użytkownika z myślą o dowolnym programie i zadaniu. Oczekiwać faktycznie może
rozmawiać z kilkoma programami jednocześnie.

Oto na przykład kilka rzeczy Oczekiwać może zrobić:

· Spraw, aby Twój komputer oddzwaniał do Ciebie, abyś mógł zalogować się bez płacenia
telefon.

· Uruchom grę (np. rogue) i jeśli nie pojawi się optymalna konfiguracja,
uruchamiaj go ponownie (w kółko), aż tak się stanie, a następnie przekaż kontrolę tobie.

· Uruchom fsck iw odpowiedzi na jego pytania odpowiedz „tak”, „nie” lub przekaż kontrolę
z powrotem do Ciebie, w oparciu o wcześniej ustalone kryteria.

· Połącz się z inną siecią lub BBS (np. MCI Mail, CompuServe) i
automatycznie pobiera Twoją pocztę, tak aby wyglądała tak, jakby była oryginalnie
wysłane do systemu lokalnego.

· Przenoś zmienne środowiskowe, bieżący katalog lub wszelkiego rodzaju informacje
poprzez rlogin, telnet, tip, su, chgrp itp.

Istnieje wiele powodów, dla których powłoka nie może wykonać tych zadań. (Spróbuj, będziesz
patrz.) Wszystko jest możliwe dzięki Oczekiwać.

Ogólnie, Oczekiwać jest przydatny do uruchamiania dowolnego programu wymagającego interakcji pomiędzy
programu i użytkownika. Wszystko, co konieczne, to możliwość interakcji
scharakteryzowane programowo. Oczekiwać może również dać użytkownikowi kontrolę (bez
zatrzymanie kontrolowanego programu) w razie potrzeby. Podobnie użytkownik może zwrócić kontrolę
do scenariusza w dowolnym momencie.

ZASTOSOWANIE


Oczekiwać czyta plik cmd aby wyświetlić listę poleceń do wykonania. Oczekiwać można również powołać
pośrednio w systemach obsługujących #! notacja poprzez oznaczenie pliku wykonywalnego skryptu oraz
tworząc pierwszą linię w skrypcie:

#!/usr/bin/oczekiwanie -f

Oczywiście ścieżka musi dokładnie opisywać dokąd Oczekiwać zyje. / usr / bin jest po prostu
przykład.

Połączenia -c flaga poprzedza polecenie, które ma zostać wykonane przed jakimkolwiek poleceniem w skrypcie. Komenda
należy cytować, aby zapobiec rozbiciu przez powłokę. Można skorzystać z tej opcji
wiele razy. Za pomocą jednego polecenia można wykonać wiele poleceń -c oddzielając je
ze średnikami. Polecenia są wykonywane w kolejności, w jakiej się pojawiają. (W przypadku korzystania z Hopek,
ta opcja jest określona jako -Komenda.)

Połączenia -d flaga umożliwia wyjście diagnostyczne, które przede wszystkim raportuje wewnętrzną aktywność
polecenia takie jak oczekiwać i interakcji. Ta flaga ma taki sam efekt jak „exp_internal 1”
na początku skryptu Hope plus wersja Oczekiwać jest drukowany. (T strace
polecenie jest przydatne do śledzenia instrukcji, a wyśledzić polecenie jest przydatne do śledzenia
przypisania zmiennych.) (W przypadku korzystania z Hopek ta opcja jest określona jako - diag.)

Połączenia -D flaga włącza interaktywny debuger. Po nim powinna nastąpić wartość całkowita. The
debugger przejmie kontrolę przed następną procedurą Tcl, jeśli wartość jest różna od zera lub jeśli a
Naciśnięto ^C (lub trafiono punkt przerwania lub pojawiło się inne odpowiednie polecenie debugera
scenariusz). Zobacz plik README lub ZOBACZ TAKŻE (poniżej), aby uzyskać więcej informacji na temat
debuger. (W przypadku korzystania z Hopek ta opcja jest określona jako -Odpluskwić.)

Połączenia -f flaga poprzedza plik, z którego można czytać polecenia. Sama flaga jest opcjonalna
ponieważ jest to przydatne tylko przy użyciu #! notacja (patrz wyżej), tak aby inne argumenty mogły
być podane w wierszu poleceń. (W przypadku korzystania z Hopek ta opcja jest określona jako -plik.)

Domyślnie plik poleceń jest wczytywany do pamięci i wykonywany w całości. To jest
czasami pożądane jest czytanie plików po jednej linii na raz. Na przykład stdin jest czytane
sposób. Aby wymusić obsługę dowolnych plików w ten sposób, użyj metody -b flaga. (Gdy
przy użyciu Hopek ta opcja jest określona jako -bufor.)Noteżestdio-
buforowaniemożenadalwziąćmiejscejednakto nie powinno sprawiać problemów przy czytaniu z fifo lub
std.

Jeśli jako nazwę pliku podano ciąg „-”, zamiast tego odczytywane jest standardowe wejście. (Używać "./-"
do odczytania z pliku o nazwie „-”.)

Połączenia -i przyczyny flag Oczekiwać do interaktywnego monitowania o polecenia zamiast ich czytania
z pliku. Podpowiadanie kończy się poprzez wyjście poleceniem lub po EOF. Widzieć interpretator
(poniżej), aby uzyskać więcej informacji. -i zakłada się, jeśli nie jest to plik poleceń ani -c Jest używane.
(W przypadku korzystania z Hopek ta opcja jest określona jako -interaktywny.)

-- może być użyty do wyznaczenia końca opcji. Jest to przydatne, jeśli chcesz przekazać plik
argument podobny do opcji do skryptu bez jego interpretacji Oczekiwać. To może
przydatne jest umieszczenie w #! line, aby zapobiec jakiejkolwiek flagowej interpretacji przez Hope. Dla
przykład poniższy pozostawi oryginalne argumenty (w tym nazwę skryptu) w
zmienna argumentacja.

#!/usr/bin/oczekuj --

Zauważ, że zwykle getopt(3) i dobry(2) Podczas dodawania należy przestrzegać konwencji
argumenty do #! linia.

Plik $exp_library/expect.rc jest pobierany automatycznie, jeśli jest obecny, chyba że -N flaga to
używany. (W przypadku korzystania z Hopek ta opcja jest określona jako -NORC.) Zaraz po tym,
plik ~/.oczekiwać.rc jest pozyskiwane automatycznie, chyba że -n używana jest flaga. Jeśli
zdefiniowano zmienną środowiskową DOTDIR, jest ona traktowana jako katalog, a plik .expect.rc już tak
czytaj stamtąd. (W przypadku korzystania z Hopek ta opcja jest określona jako -nork.) To źródło
następuje dopiero po wykonaniu dowolnego -c flagi.

-v powoduje Oczekuj wydrukowania numeru wersji i wyjścia. (Odpowiadająca flaga w
Oczekiwanie, które używa długich nazw flag, to -version.)

Opcjonalnie args są konstruowane w formie listy i przechowywane w zmiennej o nazwie argumentacja. argc is
zainicjowany na długość argv.

argv0 jest zdefiniowana jako nazwa skryptu (lub binarna, jeśli nie jest używany żaden skrypt). Dla
przykładowo poniższy wypisuje nazwę skryptu i pierwsze trzy argumenty:

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

POLECENIA


Oczekiwać zastosowania TCL (Język poleceń narzędzi). Tcl zapewnia przepływ kontroli (np. jeśli, dla,
break), ocena wyrażeń i kilka innych funkcji, takich jak rekurencja, procedura
definicja itp. Polecenia użyte tutaj, ale niezdefiniowane (np. zestaw, if, exec) to Tcl
polecenia (patrz TCL(3)). Oczekiwać obsługuje dodatkowe polecenia opisane poniżej. Chyba że
określono inaczej, polecenia zwracają pusty ciąg.

Polecenia są ułożone alfabetycznie, co ułatwia ich szybkie odnalezienie. Jednak nowy
użytkownikom może być łatwiej zacząć od przeczytania opisów ikra, wysłać, oczekiwać,
interakcji, w tej kolejności.

Pamiętaj, że najlepsze wprowadzenie do języka (zarówno Oczekiwanego, jak i Tcl) znajduje się w
książkę „Odkrywanie oczekiwań” (patrz także poniżej). Przykłady znajdują się na tej stronie podręcznika, ale
są one bardzo ograniczone, ponieważ ta strona podręcznika ma przede wszystkim służyć jako materiał referencyjny.

Należy zauważyć, że w tekście tej strony podręcznika „Oczekuj” z wielką literą „E” odnosi się do
Oczekiwać program, podczas gdy „oczekiwać” przez małe „e” odnosi się do oczekiwać polecenie wewnątrz
dotychczasowy Oczekiwać program.)

zamknięte [-niewolnik] [-jedenwykon 0|1] [-ja id_spawnu]
zamyka połączenie z bieżącym procesem. Większość programów interaktywnych wykryje
EOF na swoim stdin i wyjściu; zatem zamknięte zwykle wystarczy zabić proces jako
dobrze. The -i flag deklaruje zamknięcie procesu odpowiadającego nazwanemu
id_spawnu.

Obie oczekiwać i interakcji wykryje, kiedy bieżący proces zakończy się i niejawnie
zrobić zamknięte. Ale jeśli zabijesz proces, powiedzmy „exec kill $pid”, będzie to konieczne
wyraźnie zadzwonić zamknięte.

Połączenia -onexec flag określa, czy identyfikator odrodzenia będzie zamknięty w każdym nowym spawnie
procesów lub jeśli proces jest nakładany. Aby pozostawić identyfikator odrodzenia otwarty, użyj wartości
0. Niezerowa wartość całkowita wymusi zamknięcie spawnu (domyślnie) w dowolnym nowym miejscu
procesów.

Połączenia -niewolnik flaga zamyka niewolnika powiązanego z identyfikatorem odrodzenia. (Zobacz „spawn -pty”).
Gdy połączenie zostanie zamknięte, urządzenie podrzędne również zostanie automatycznie zamknięte, jeśli jest nadal
otwarte.

Bez względu na to, czy połączenie jest zamknięte pośrednio, czy jawnie, powinieneś zadzwonić
czekać aby wyczyścić odpowiednią szczelinę procesu jądra. zamknięte nie dzwoni czekać
ponieważ nie ma gwarancji, że zamknięcie połączenia procesowego spowoduje jego zakończenie.
See czekać poniżej, aby uzyskać więcej informacji.

debug [[-Teraz] 0|1]
steruje debugerem Tcl umożliwiającym przechodzenie przez instrukcje, ustawianie punktów przerwania,
itd.

W przypadku braku argumentów zwracana jest wartość 1, jeśli debuger nie jest uruchomiony, w przeciwnym razie zwracana jest wartość 0
zwrócony.

Z argumentem 1 uruchamiany jest debuger. W przypadku argumentu 0 debuger jest
zatrzymany. Jeśli argument 1 jest poprzedzony przez -teraz flagę, debuger zostanie uruchomiony
natychmiast (tj. w środku debug samo polecenie). W przeciwnym razie
debuger jest uruchamiany następną instrukcją Tcl.

Połączenia debug polecenie nie zmienia żadnych pułapek. Porównaj to z rozpoczęciem oczekiwania z
dotychczasowy -D flaga (patrz wyżej).

Więcej informacji na temat debugera można znaleźć w pliku README lub ZOBACZ TAKŻE (poniżej).

odłączyć
odłącza rozwidlony proces od terminala. Nadal działa w
tło. Procesowi przydzielona jest własna grupa procesów (jeśli to możliwe). Standardowe wejścia/wyjścia
zostaje przekierowany do /dev/null.

Poniższy fragment wykorzystuje odłączyć aby kontynuować uruchamianie skryptu w pliku
tło.

jeśli {[fork]!=0} wyjdź
odłączyć
. . .

Poniższy skrypt odczytuje hasło, a następnie co godzinę uruchamia program
żąda hasła przy każdym uruchomieniu. Skrypt dostarcza hasło, aby to zrobić
wystarczy wpisać go tylko raz. (Zobacz stty polecenie pokazujące, jak skręcić
wyłącz echo hasła.)

send_user "hasło?\ "
oczekiwany_użytkownik -re "(.*)\n"
Za 1 {} {
if {[widelec]!=0} {uśpij 3600;kontynuuj}
odłączyć
spawnuj priv_prog
oczekuj hasła:
wyślij „$expect_out(1,string)\r”
. . .
wyjście
}

Zaletą używania odłączyć nad funkcją procesu asynchronicznego powłoki (&).
że Oczekiwać może zapisać parametry terminala przed rozłączeniem i później
zastosuj je do nowych pty. Z &, Oczekiwać nie ma możliwości przeczytania
parametry terminala, ponieważ terminal jest już odłączony Oczekiwać
otrzymuje kontrolę.

wyjście [-opcja] [status]
Przyczyny Oczekiwać wyjść lub w inny sposób przygotować się do tego.

Połączenia -jedno wyjście flag powoduje użycie następnego argumentu jako procedury obsługi wyjścia. Bez
argument, zwracany jest bieżący program obsługi wyjścia.

Połączenia -brak wyjścia przyczyny flag Oczekiwać przygotować się do wyjścia, ale faktycznie się zatrzymać
przywrócenie kontroli systemowi operacyjnemu. Zdefiniowany przez użytkownika program obsługi wyjścia jest uruchamiany jako
jak również własne wewnętrzne procedury obsługi firmy Hope. Nie powinno być żadnych dalszych poleceń oczekujących
wykonany. Jest to przydatne, jeśli używasz programu Hope z innymi rozszerzeniami Tcl. The
bieżący interpreter (i okno główne, jeśli jest w środowisku Tk) pozostają takie same, jak inne
Rozszerzenia Tcl mogą wyczyścić. Jeśli się spodziewasz wyjście jest wywoływany ponownie (jakkolwiek mogłoby to być
wystąpi), procedury obsługi nie są uruchamiane ponownie.

Po wyjściu wszystkie połączenia z procesami spawnowanymi są zamykane. Zamknięcie będzie
wykryty jako EOF przez uruchomione procesy. wyjście nie podejmuje żadnych innych działań poza tym
normalny _Wyjście(2) procedura tak. W ten sposób zrodziły się procesy, które nie sprawdzają
EOF może nadal działać. (Przy ustalaniu, ważne jest uwzględnienie różnych warunków, np
na przykład, jakie sygnały zostaną wysłane do uruchomionego procesu, ale są to sygnały systemowe
zależne, zwykle udokumentowane w sekcji wyjście(3).) Procesy zrodzone, które trwają
run zostanie odziedziczony przez init.

status (lub 0, jeśli nie określono) jest zwracane jako status wyjścia Oczekiwać. wyjście is
wykonywane niejawnie po osiągnięciu końca skryptu.

exp_kontynuuj [-kontynuuj_timer]
Komenda exp_kontynuuj pozwala oczekiwać zamiast kontynuować wykonywanie
powrót tak jak zwykle. Domyślnie exp_kontynuuj resetuje licznik czasu.
Połączenia -kontynuuj_timer flaga uniemożliwia ponowne uruchomienie timera. (Widzieć oczekiwać więcej
Informacja.)

exp_wewnętrzne [-F plik] wartość
powoduje, że dalsze polecenia wysyłają wewnętrzne informacje diagnostyczne Oczekiwać na stderr
if wartość jest niezerowy. To wyjście jest wyłączone, jeśli wartość wynosi 0. Diagnostyka
informacje obejmują każdy otrzymany znak i każdą próbę dopasowania
prąd wyjściowy względem wzorców.

Jeśli opcjonalne filet jest dostarczany, wszystkie normalne i debugujące dane wyjściowe są do niego zapisywane
plik (niezależnie od wartości wartość). Każdy poprzedni plik wyjściowy diagnostyczny to
zamknięty.

Połączenia -informacje flag powoduje, że exp_internal zwraca opis najnowszego nie-
podane argumenty informacyjne.

exp_otwarte [argumenty] [-ja id_spawnu]
zwraca identyfikator pliku Tcl, który odpowiada oryginalnemu identyfikatorowi odradzania. Plik
identyfikator może być następnie używany tak, jakby został otwarty przez firmę Tcl koncepcja Komenda. (Poród
id nie powinien być już używany. A czekać nie należy wykonywać.

Połączenia -pozostawić otwarte flaga pozostawia identyfikator odrodzenia otwarty, aby można było uzyskać do niego dostęp za pomocą poleceń oczekujących. A
czekać musi zostać wykonany na identyfikatorze spawnu.

exp_pid [-ja id_spawnu]
zwraca identyfikator procesu odpowiadający aktualnie uruchomionemu procesowi. Jeśli -i
flaga, zwrócony pid odpowiada podanemu identyfikatorowi odrodzenia.

ex_send
jest aliasem dla wysłać.

exp_send_error
jest aliasem dla Wyślij błąd.

exp_send_log
jest aliasem dla wyślij_log.

exp_send_tty
jest aliasem dla wyślij_tty.

exp_send_user
jest aliasem dla wyślij_użytkownika.

wersja_exp [[-Wyjście] wersja]
jest przydatny do zapewnienia zgodności skryptu z bieżącą wersją
Oczekiwać.

Bez argumentów bieżąca wersja Oczekiwać jest zwracany. Ta wersja może wtedy
być zakodowane w twoim skrypcie. Jeśli rzeczywiście wiesz, że nie korzystasz z funkcji
najnowsze wersje, możesz określić wcześniejszą wersję.

Wersje składają się z trzech liczb oddzielonych kropkami. Pierwsza to liczba główna.
Skrypty napisane dla wersji Oczekiwać z inną liczbą główną będzie prawie
na pewno nie działa. wersja_exp zwraca błąd, jeśli liczby główne nie są zgodne.

Druga to liczba podrzędna. Skrypty napisane dla wersji z większym mollem
liczba niż bieżąca wersja może zależeć od jakiejś nowej funkcji i może nie działać.
wersja_exp zwraca błąd, jeśli liczby główne są zgodne, ale liczba podrzędna skryptu
jest większa niż w przypadku biegania Oczekiwać.

Trzecia to liczba, która nie odgrywa żadnej roli przy porównaniu wersji. Jednak tak jest
wzrasta, gdy Oczekiwać dystrybucja oprogramowania została w jakikolwiek sposób zmieniona, np
dodatkowa dokumentacja lub optymalizacja. Jest resetowany do 0 po każdym nowym pomniejszym
wersja.

Z -Wyjście flaga, Oczekiwać wypisuje błąd i kończy działanie, jeśli wersja jest nieaktualna.

oczekiwać [[-opcje] pat1 ciało1] ... [-opcja] wzór [ciało]
czeka, aż jeden ze wzorców będzie odpowiadał wynikowi uruchomionego procesu, określonemu
upłynął pewien okres czasu lub widoczny jest koniec pliku. Jeśli końcowe ciało jest puste, to
można pominąć.

Wzory z najnowszych spodziewaj się_przed polecenie są domyślnie używane przed jakimkolwiek
inne wzory. Wzory z najnowszych oczekiwać_po polecenie jest ukryte
użyte po innych wzorach.

Jeśli argumenty do całości oczekiwać instrukcja wymaga więcej niż jednej linii, wszystkie
argumenty można „łączyć” w jeden, aby uniknąć kończenia każdej linii znakiem a
ukośnik wsteczny. W tym jednym przypadku zwykłe podstawienia Tcl wystąpią pomimo
aparat ortodontyczny.

Jeśli wzór jest słowem kluczowym euf, odpowiednie ciało jest wykonywane po zakończeniu-
plik. Jeśli wzór jest słowem kluczowym Timeout, wykonywane jest odpowiednie ciało
koniec czasu. Jeśli nie zostanie użyte słowo kluczowe timeout, wykonywana jest niejawna akcja null
koniec czasu. Domyślny limit czasu wynosi 10 sekund, ale można go ustawić np. na
30, za pomocą polecenia „ustaw limit czasu 30”. Nieskończony limit czasu może zostać wyznaczony przez
wartość -1. Jeśli wzór jest słowem kluczowym domyślnym, wykonywane jest odpowiednie ciało
po przekroczeniu limitu czasu lub końcu pliku.

Jeśli wzorzec pasuje, wykonywana jest odpowiednia treść. oczekiwać zwraca
wynik treści (lub pusty ciąg znaków, jeśli nie pasuje żaden wzorzec). W zdarzeniu w którym
pasuje do wielu wzorców, do wybrania bryły używany jest ten, który pojawia się jako pierwszy.

Za każdym razem, gdy pojawiają się nowe dane wyjściowe, są one porównywane z każdym wzorcem w takiej kolejności, w jakiej są
katalogowany. W ten sposób możesz sprawdzić brak dopasowania, tworząc ostatni wzór
coś, co na pewno się pojawi, na przykład podpowiedź. W sytuacjach, gdy nie ma
monit, musisz użyć Timeout (tak jak w przypadku ręcznej interakcji).

Wzory są określane na trzy sposoby. Domyślnie wzorce są określone jako with
Tcl ciąg mecz Komenda. (Takie wzory są również podobne do zwykłych powłok C
wyrażenia zwykle określane jako wzorce „globowe”). The -gl można używać flagi
aby chronić wzorce, które w przeciwnym razie mogłyby pasować oczekiwać flagi, aby to zrobić. Każdy
wzór rozpoczynający się od „-” powinien być chroniony w ten sposób. (Wszystkie ciągi znaków zaczynają się
z „-” są zarezerwowane dla przyszłych opcji.)

Na przykład następujący fragment szuka udanego logowania. (Zauważ to poronienie
zakłada się, że jest to procedura zdefiniowana w innym miejscu skryptu.)

oczekiwać {
zajęty {stawia zajęty\n; exp_kontynuuj}
nieudane przerwanie
„nieprawidłowe hasło” zostało przerwane
przerwanie przekroczenia limitu czasu
połączony
}

W czwartym wzorcu konieczne są cudzysłowy, ponieważ zawiera on spację, co by oznaczało
w przeciwnym razie oddziel wzór od akcji. Wzory o tej samej akcji (np
jako 3. i 4.) wymagają ponownego wylistowania działań. Można tego uniknąć stosując
wzorce w stylu wyrażeń regularnych (patrz poniżej). Więcej informacji na temat tworzenia wzorów w stylu globu
można znaleźć w instrukcji Tcl.

Wzorce w stylu wyrażeń regularnych są zgodne ze składnią zdefiniowaną przez Tcl regexp (skrót od „zwykły
wyrażenie"). Wzory wyrażeń regularnych są wprowadzane za pomocą flagi -re,
poprzedni przykład można przepisać przy użyciu wyrażenia regularnego jako:

oczekiwać {
zajęty {stawia zajęty\n; exp_kontynuuj}
-re "niepowodzenie|nieprawidłowe hasło" przerwanie
przerwanie przekroczenia limitu czasu
połączony
}

Obydwa typy wzorów są „niezakotwiczone”. Oznacza to, że wzory nie muszą
dopasowuje cały ciąg, ale może rozpoczynać i kończyć dopasowanie w dowolnym miejscu ciągu (np
o ile wszystko inne się zgadza). Użyj ^, aby dopasować początek łańcucha, i $
dopasować do końca. Pamiętaj, że jeśli nie zaczekasz na koniec ciągu, plik Twój
odpowiedzi mogą z łatwością znaleźć się w środku łańcucha, gdy zostaną powtórzone z pliku
proces zrodzony. Dane wyjściowe mogą wyglądać nadal, zapewniając prawidłowe wyniki
nienaturalny. Dlatego zaleca się używanie znaku $, jeśli potrafisz dokładnie opisać znaki
na końcu ciągu.

Zauważ, że w wielu edytorach ^ i $ dopasowują początek i koniec linii
odpowiednio. Ponieważ jednak oczekiwanie nie jest zorientowane liniowo, znaki te są zgodne
początek i koniec danych (w przeciwieństwie do linii) aktualnie oczekiwanych
pasujący bufor. (Zobacz także poniższą uwagę dotyczącą „niestrawności układowej”).

Połączenia -były flag powoduje, że wzorzec jest dopasowywany jako „dokładny” ciąg znaków. NIE
dokonuje się interpretacji *, ^ itd. (chociaż zwykłe konwencje Tcl muszą nadal
być obserwowanym). Dokładne wzory są zawsze niezakotwiczone.

Połączenia -Nocase flag powoduje, że wielkie litery na wyjściu są porównywane tak, jakby były
były małymi literami. Nie ma to wpływu na wzór.

Podczas odczytywania danych wyjściowych więcej niż 2000 bajtów może wymusić zmianę wcześniejszych bajtów
"zapomniany". Można to zmienić za pomocą funkcji mecz_maks. (Zauważ, że
zbyt duże wartości mogą spowolnić funkcję dopasowywania wzorców.) If patlista is
pełny_bufor, wykonywana jest odpowiednia treść if mecz_maks bajtów było
otrzymano i żadne inne wzorce nie zostały dopasowane. Niezależnie od tego, czy pełny_bufor keyword
jest używany, zapomniane znaki są zapisywane do oczekującego_out(bufor).

If patlista jest słowem kluczowym zeroi wartości null są dozwolone (za pośrednictwem usuń_nulls
polecenie), odpowiednia treść zostanie wykonana, jeśli zostanie dopasowane pojedyncze ASCII 0. To jest
nie można dopasować 0 bajtów za pomocą wzorców glob lub wyrażeń regularnych.

Po dopasowaniu wzorca (lub eof lub full_buffer), dowolnym dopasowaniu i wcześniej
niedopasowane dane wyjściowe są zapisywane w zmiennej oczekiwanie_wyjście(bufor). Do 9 wyrażeń regularnych
dopasowania podciągów są zapisywane w zmiennych oczekiwanie_wyjścia(1, ciąg) przez
oczekiwanie_wyjścia(9, ciąg), Jeśli -indeksy flaga jest używana przed wzorem, początkiem
i indeksy końcowe (w formie odpowiedniej dla duży zasięg) z 10 ciągów znaków jest przechowywanych w
zmienne oczekiwaj_wyjścia(X,start) i oczekiwaj_wyjścia(X,koniec) gdzie X jest cyfrą,
odpowiada pozycji podłańcucha w buforze. 0 odnosi się do ciągów znaków, które
pasuje do całego wzorca i jest generowany dla wzorców glob i wyrażeń regularnych
wzory. Na przykład, jeśli proces wygenerował wynik „abcdefgh\n”, wynik
z:

spodziewaj się „cd”

wygląda tak, jakby zostały wykonane następujące instrukcje:

ustaw oczekiwanie_out(0,string) CD
ustaw oczekiwanie_out(bufor) abcd

a „efgh\n” pozostaje w buforze wyjściowym. Jeśli proces wygenerował wynik
„abbbcabkkkka\n”, wynik:

oczekuj -indeksy -re "b(b*).*(k+)"

wygląda tak, jakby zostały wykonane następujące instrukcje:

ustaw oczekiwanie_out(0,start) 1
ustaw oczekiwanie_out(0,koniec) 10
ustaw oczekiwanie_out(0,string) bbbcabkkkk
ustaw oczekiwanie_out(1,start) 2
ustaw oczekiwanie_out(1,koniec) 3
ustaw oczekiwanie_out(1,string) bb
ustaw oczekiwanie_out(2,start) 10
ustaw oczekiwanie_out(2,koniec) 10
ustaw oczekiwanie_out(2,string) k
ustaw oczekiwanie_out(bufor) abbbcabkkkk

a „a\n” pozostaje w buforze wyjściowym. Wzorzec „*” (i -re „.*”) zostanie opróżniony
bufor wyjściowy bez odczytywania dalszych danych wyjściowych procesu.

Zwykle dopasowane dane wyjściowe są odrzucane z wewnętrznych buforów programu Hope. Tego maja
można temu zapobiec, poprzedzając wzór znakiem -brak transferu flaga. Ta flaga jest
szczególnie przydatne w eksperymentowaniu (dla wygody można je skrócić do „-nie”)
podczas eksperymentowania).

Zapisywany jest identyfikator odradzania powiązany z pasującym wyjściem (lub eof lub full_buffer).
in oczekiwanie_out(id_spawnu).

Połączenia -koniec czasu flag powoduje, że bieżące polecenie oczekiwania używa następującej wartości jako a
timeout zamiast używać wartości zmiennej timeout.

Jednak domyślnie wzorce są dopasowywane do danych wyjściowych bieżącego procesu
dotychczasowy -i flag deklaruje, że dane wyjściowe z nazwanej listy spawn_id będą dopasowane do dowolnego
następujące wzorce (aż do następnego -i). Lista spawn_id powinna być albo a
Oddzielona spacjami lista spawn_ids lub zmienna odnosząca się do takiej listy
spawn_ids.

Na przykład poniższy przykład czeka na „połączenie” z bieżącego procesu,
lub „zajęty”, „nieudany” lub „nieprawidłowe hasło” z identyfikatora spawn_id nazwanego przez $proc2.

oczekiwać {
-i $proc2 zajęty {stawia zajęty\n; exp_kontynuuj}
-re "niepowodzenie|nieprawidłowe hasło" przerwanie
przerwanie przekroczenia limitu czasu
połączony
}

Wartość zmiennej globalnej dowolny_spawn_id można wykorzystać do dopasowania wzorców do dowolnych
spawn_ids, których nazwy są takie same jak wszystkie inne -i flagi w nurcie oczekiwać Komenda. Plik
spawn_id z a -i flaga bez powiązanego wzorca (tj. po której następuje bezpośrednio
inne -i) jest udostępniany innym wzorcom w tym samym oczekiwać komenda
związany z dowolny_spawn_id.

Połączenia -i flaga może również nazywać zmienną globalną, w którym to przypadku zmienna jest odczytywana przez a
lista identyfikatorów spawnu. Zmienna jest ponownie odczytywana po każdej zmianie. To zapewnia sposób
zmiany źródła wejścia/wyjścia podczas wykonywania polecenia. Podano identyfikatory spawnu
w ten sposób nazywane są „pośrednimi” identyfikatorami odradzania.

Działania takie jak złamać i kontynuować struktury kontroli przyczyn (tj. dla, proc) Do
zachowywać się w zwykły sposób. Komenda exp_kontynuuj pozwala oczekiwać sobie kontynuować
wykonywania, a nie powrotu w normalny sposób.

Jest to przydatne, aby uniknąć jawnych pętli lub powtarzających się instrukcji oczekiwań. The
Poniższy przykład jest częścią fragmentu automatyzującego rlogin. The exp_kontynuuj unika
muszę napisać sekundę oczekiwać instrukcja (aby ponownie wyszukać monit), jeśli
rlogin pyta o hasło.

oczekiwać {
Hasło: {
stty-echo
send_user "hasło (dla $użytkownika) na $host: "
oczekiwany_użytkownik -re "(.*)\n"
send_user "\n"
wyślij „$expect_out(1,string)\r”
dobre echo
exp_kontynuuj
} nieprawidłowe {
send_user "nieprawidłowe hasło lub konto\n"
wyjście
} koniec czasu {
send_user "Upłynął limit czasu połączenia z $hostem\n"
wyjście
} eof {
użytkownik_wyślij \
„połączenie z hostem nie powiodło się: $expect_out(bufor)”
wyjście
} -re $podpowiedź
}

Na przykład następujący fragment może pomóc użytkownikowi poprowadzić interakcję
już całkowicie zautomatyzowany. W takim przypadku terminal przechodzi w tryb surowy. Jeśli
użytkownik naciśnie „+”, zmienna zostanie zwiększona. Jeśli zostanie naciśnięte „p”, nastąpi kilka powrotów
wysyłane do procesu, być może po to, aby go w jakiś sposób szturchnąć, a „i” pozwala użytkownikowi na interakcję
z procesem, skutecznie odbierając kontrolę nad skryptem. W każdej sprawie,
dotychczasowy exp_kontynuuj pozwala na prąd oczekiwać aby kontynuować dopasowywanie wzorca po
wykonanie bieżącej akcji.

stty surowe -echo
spodziewać się_po {
-i $ user_spawn_id
„p” {wyślij „\r\r\r”; exp_kontynuuj}
„+” {zwiększ foo; exp_kontynuuj}
„ja” {interakcja; exp_kontynuuj}
„wyjdź” z wyjścia
}

Domyślnie exp_kontynuuj resetuje licznik czasu. Licznik czasu nie jest uruchamiany ponownie, jeśli
exp_kontynuuj nazywa się z -kontynuuj_timer flag.

oczekiwać_po [oczekuj_argumentów]
działa identycznie jak spodziewaj się_przed z wyjątkiem tego, że jeśli wzorce z obu oczekiwać i
oczekiwać_po może pasować, oczekiwać wzór jest używany. Zobacz spodziewaj się_przed komenda
po więcej informacji.

oczekuj_tła [oczekuj_argumentów]
przyjmuje te same argumenty co oczekiwać, jednakże wraca natychmiast. Wzory są
testowane za każdym razem, gdy napływają nowe dane wejściowe. Wzór Timeout i domyślnym są bez znaczenia
do oczekuj_tła i są po cichu odrzucane. W przeciwnym razie oczekuj_tła
używa poleceń spodziewaj się_przed i oczekiwać_po wzory takie same oczekiwać robi.

Kiedy oczekuj_tła działania są oceniane, przetwarzanie w tle dla
ten sam identyfikator odradzania jest zablokowany. Przetwarzanie w tle zostaje odblokowane po wykonaniu akcji
kończy. Podczas gdy przetwarzanie w tle jest zablokowane, możliwe jest wykonanie:
(pierwszoplanowy) oczekiwać na tym samym identyfikatorze spawnu.

Nie ma możliwości wykonania oczekiwać podczas gdy oczekuj_tła jest odblokowany.
oczekuj_tła dla określonego identyfikatora odrodzenia jest usuwany poprzez zadeklarowanie nowego
require_background z tym samym identyfikatorem odradzania. Deklarowanie oczekuj_tła z nie
wzór usuwa podany identyfikator odrodzenia z możliwości dopasowywania wzorców w pliku
tło.

spodziewaj się_przed [oczekuj_argumentów]
przyjmuje te same argumenty co oczekiwać, jednakże wraca natychmiast. Wzór-akcja
pary z najnowszych spodziewaj się_przed z tym samym identyfikatorem odradzania są dodawane pośrednio
do każdego następcy oczekiwać polecenia. Jeśli wzór pasuje, jest traktowany tak, jakby miał
zostało określone w oczekiwać samo polecenie, a powiązana z nim treść jest wykonywana
kontekst oczekiwać Komenda. Jeśli wzory z obu spodziewaj się_przed i oczekiwać
może pasować, spodziewaj się_przed wzór jest używany.

Jeśli nie określono żadnego wzorca, identyfikator odradzania nie jest sprawdzany pod kątem żadnych wzorców.

Chyba że zostanie zastąpiony przez a -i flaga, spodziewaj się_przed wzorce pasują do identyfikatora odrodzenia
zdefiniowano wówczas, że spodziewaj się_przed polecenie zostało wykonane (nie wtedy, gdy jego
wzór się zgadza).

Flaga -info powoduje spodziewaj się_przed aby zwrócić aktualne specyfikacje czego
wzory, do których będzie pasować. Domyślnie raportuje bieżący identyfikator odrodzenia. Jakiś
W celu uzyskania informacji na temat tego identyfikatora odrodzenia można podać opcjonalną specyfikację identyfikatora odrodzenia. Dla
przykład

spodziewaj się_przed -info -i $proc

Można podać maksymalnie jedną specyfikację identyfikatora odradzania. Flaga -indirect tłumi
bezpośrednie identyfikatory odradzania, które pochodzą wyłącznie ze specyfikacji pośrednich.

Zamiast specyfikacji identyfikatora odrodzenia, flaga „-all” spowoduje raportowanie „-info”.
wszystkie identyfikatory spawnu.

Dane wyjściowe flagi -info można ponownie wykorzystać jako argument funkcji oczekiwanie_przed.

oczekiwać_tty [oczekuj_argumentów]
jest jak oczekiwać ale czyta znaki z /dev/tty (tj. naciśnięcia klawiszy z
użytkownik). Domyślnie odczyt odbywa się w trybie ugotowanym. Zatem linie muszą kończyć się na
powrót w celu oczekiwać zobaczyć ich. Można to zmienić poprzez stty (Patrz
stty polecenie poniżej).

oczekuj_użytkownika [oczekuj_argumentów]
jest jak oczekiwać ale czyta znaki ze standardowego wejścia (tj. naciśnięcia klawiszy przez użytkownika).
Domyślnie odczyt odbywa się w trybie ugotowanym. Dlatego linie muszą kończyć się zwrotem
w celu oczekiwać zobaczyć ich. Można to zmienić poprzez stty (Patrz stty komenda
poniżej).

widelec tworzy nowy proces. Nowy proces jest dokładną kopią obecnego Oczekiwać
proces. O sukcesie widelec zwraca 0 do nowego (potomnego) procesu i zwraca
identyfikator procesu procesu potomnego do procesu nadrzędnego. W przypadku niepowodzenia (zawsze z powodu
z powodu braku zasobów, np. przestrzeni wymiany, pamięci), widelec zwraca -1 do rodzica
procesu i nie jest tworzony żaden proces potomny.

Rozwidlone procesy wychodzą przez wyjście polecenie, podobnie jak oryginalny proces. Rozwidlony
procesy mogą zapisywać pliki dziennika. Jeśli nie wyłączysz debugowania lub
logując się do większości procesów, wynik może być mylący.

Niektóre implementacje pty mogą być mylone nawet przez wielu czytelników i autorów
chwilowo. Dlatego najbezpieczniej jest widelec przed procesami tarła.

interakcji [ciąg1 ciało1] ... [ciąg [ciało]]
daje użytkownikowi kontrolę nad bieżącym procesem, dzięki czemu naciśnięcia klawiszy są wysyłane do
bieżący proces i zwracane są stdout i stderr bieżącego procesu.

Jako argumenty można podać pary ciąg-ciało, w którym to przypadku treść zostanie wykonana
po wprowadzeniu odpowiedniego ciągu. (Domyślnie ciąg nie jest wysyłany do
bieżący proces.) The interpretator przyjmuje się polecenie, jeśli jest to końcowa bryła
brakujący.

Jeśli argumenty do całości interakcji instrukcja wymaga więcej niż jednej linii, wszystkie
argumenty można „łączyć” w jeden, aby uniknąć kończenia każdej linii znakiem a
ukośnik wsteczny. W tym jednym przypadku zwykłe podstawienia Tcl wystąpią pomimo
aparat ortodontyczny.

Na przykład następujące polecenie uruchamia interakcję z następującą treścią ciągu
zdefiniowane pary: Po naciśnięciu ^Z, Oczekiwać jest zawieszona. (T -Resetowanie flaga przywraca
tryby terminala.) Po naciśnięciu ^A użytkownik widzi „wpisałeś klawisz Control-A” i
procesowi wysyłany jest ^A. Po naciśnięciu $ użytkownik widzi datę. Kiedy ^C jest
prasowany, Oczekiwać wychodzi. Jeśli zostanie wprowadzone „foo”, użytkownik zobaczy „pasek”. Kiedy ~~ jest
wciśnięty, Oczekiwać interpreter działa interaktywnie.

ustaw CTRLZ \032
oddziaływać {
-reset $CTRLZ {exec kill -STOP [pid]}
\001 {send_user "wpisałeś kontrolkę A\n";
wyślij „\001”
}
$ {send_user "Data to [format zegara [sekundy zegara]]."}
\003 wyjdź
foo {send_user "bar"}
~~
}

W parach ciąg-ciało ciągi są dopasowywane w kolejności, w jakiej są wymienione jako argumenty.
Ciągi znaków, które są częściowo zgodne, nie są wysyłane do bieżącego procesu w oczekiwaniu na
reszta przyjdzie. Jeśli znaki są następnie wprowadzane w taki sposób, że nie można już
prawdopodobnie będzie pasować, tylko część ciągu zostanie wysłana do procesu
nie może rozpocząć kolejnego meczu. Zatem ciągi, które są podciągami częściowymi
dopasowania można dopasować później, jeśli oryginalne ciągi znaków próbowały zostać dopasowane
ostatecznie kończy się niepowodzeniem.

Domyślnie dopasowywanie ciągów jest dokładne, bez symboli wieloznacznych. (W przeciwieństwie do oczekiwać
polecenie domyślnie używa wzorców w stylu globu.) The -były Flaga może służyć do ochrony
wzorce, które w przeciwnym razie mogłyby pasować interakcji flagi, aby to zrobić. Dowolny wzór
rozpoczynające się od „-” powinny być chronione w ten sposób. (Wszystkie ciągi znaków zaczynające się od „-”
są zarezerwowane dla przyszłych opcji.)

Połączenia -re flag wymusza interpretację ciągu jako wzorca w stylu wyrażenia regularnego. W tym
przypadku pasujące podciągi są przechowywane w zmiennej interakcja_out podobnie do
droga oczekiwać przechowuje swoje dane wyjściowe w zmiennej oczekiwać_wyjścia, -indeksy flaga to
podobnie wspierane.

Wzór euf wprowadza akcję wykonywaną po zakończeniu pliku. Oddzielny
euf wzór może również podążać za -wyjście flaga, w którym to przypadku jest dopasowywana, jeśli eof
zostaje wykryty podczas zapisywania danych wyjściowych. Domyślny euf akcja to „powrót”, więc tak
interakcji po prostu zwraca po dowolnym EOF.

Wzór Timeout wprowadza limit czasu (w sekundach) i akcję, która jest wykonywana
po upływie określonego czasu nie zostały odczytane żadne znaki. The Timeout wzór dotyczy
ostatnio określony proces. Nie ma domyślnego limitu czasu. Specjalny
zmienna „timeout” (używana przez oczekiwać polecenie) nie ma wpływu na ten limit czasu.

Na przykład poniższa instrukcja może zostać użyta do automatycznego wylogowania użytkowników, którzy tego nie zrobili
wpisał cokolwiek przez godzinę, ale nadal otrzymuje częste komunikaty systemowe:

interakcja -input $user_spawn_id timeout 3600 return -output \
$spawn_id

Jeśli wzór jest słowem kluczowym zeroi wartości null są dozwolone (za pośrednictwem usuń_nulls
polecenie), odpowiednia treść zostanie wykonana, jeśli zostanie dopasowane pojedyncze ASCII 0. To jest
nie można dopasować 0 bajtów za pomocą wzorców glob lub wyrażeń regularnych.

Poprzedzenie wzoru z flagą -piszę powoduje zmienną Interact_out(spawn_id)
ustawić na spawn_id, który pasuje do wzorca (lub eof).

Działania takie jak złamać i kontynuować struktury kontroli przyczyn (tj. dla, proc) Do
zachowywać się w zwykły sposób. Jednakże powrót powoduje, że interakcja powraca do wywołującego,
Podczas między_powrotami Przyczyny interakcji aby spowodować powrót w wywołującym. Na przykład, jeśli
wywołano „proc foo”. interakcji który następnie wykonał akcję między_powrotami, proc bla
wróci. (Oznacza to, że jeśli interakcji Połączenia interpretator interaktywne pisanie
powrót spowoduje kontynuację interakcji, podczas gdy między_powrotami spowoduje
interakcji, aby powrócić do osoby wywołującej.)

Podczas interakcji, używany jest tryb surowy, dzięki czemu wszystkie znaki mogą być przekazywane do
obecny proces. Jeśli bieżący proces nie przechwyci sygnałów sterujących zadaniem, zrobi to
stop, jeśli zostanie wysłany sygnał stopu (domyślnie ^Z). Aby go ponownie uruchomić, wyślij sygnał kontynuacji
(np. przez „kill -CONT "). Jeśli naprawdę chcesz wysłać SIGSTOP do np
proces (przez ^Z), rozważ najpierw odrodzenie csh, a następnie uruchomienie programu. Na
z drugiej strony, jeśli chcesz wysłać SIGSTOP do Oczekiwać sam, najpierw zadzwoń do tłumacza
(być może używając znaku ucieczki), a następnie naciśnij ^Z.

Par struna-ciało można używać jako skrótu, aby uniknąć konieczności wprowadzania
interpretować i wykonywać polecenia interaktywnie. Używany jest poprzedni tryb terminala
podczas gdy wykonywana jest treść pary ciąg-ciało.

Aby zapewnić szybkość, akcje są domyślnie wykonywane w trybie surowym. The -Resetowanie flaga resetuje
terminal do poprzedniego trybu interakcji został wykonany (zawsze w trybie ugotowanym).
Należy pamiętać, że znaki wprowadzone podczas przełączania trybu mogą zostać utracone (np
niefortunna funkcja sterownika terminala w niektórych systemach). Jedyny powód, aby używać
-Resetowanie ma miejsce, jeśli twoje działanie zależy od działania w trybie ugotowanym.

Połączenia -Echo flag wysyła znaki pasujące do poniższego wzorca z powrotem do procesu
który je wygenerował podczas odczytywania każdego znaku. Może to być przydatne, gdy użytkownik
musi zobaczyć informację zwrotną z częściowo wpisanych wzorców.

Jeśli wzorzec jest powtarzany, ale ostatecznie nie pasuje, znaki są wysyłane
do zarodkowego procesu. Jeśli wywołany proces powtórzy je, użytkownik zobaczy
postacie dwa razy. -Echo jest prawdopodobnie właściwe tylko w sytuacjach, gdy
jest mało prawdopodobne, że użytkownik nie ukończy wzorca. Na przykład następujący fragment
z rftp, skryptu rekurencyjnego-ftp, w którym użytkownik jest proszony o wprowadzenie ~g, ~p lub
~l, aby rekurencyjnie pobrać, umieścić lub wyświetlić bieżący katalog. Te są tak daleko
ze zwykłych poleceń FTP, jest mało prawdopodobne, aby użytkownik wpisał ~, a następnie
cokolwiek innego, z wyjątkiem pomyłki, w którym to przypadku prawdopodobnie po prostu zignorują
w każdym razie wynik.

oddziaływać {
-echo ~g {getcurdirectory 1}
-echo ~l {getcurdirectory 0}
-echo ~p {katalog putcur}
}

Połączenia -nobufor flag wysyła znaki pasujące do następującego wzorca do
proces wyjściowy podczas odczytywania znaków.

Jest to przydatne, gdy chcesz, aby program odtworzył echo wzorca. Na przykład,
do monitorowania miejsca wybierania numeru można użyć następujących poleceń (w stylu Hayesa
modem). Za każdym razem, gdy widoczne jest „atd”, skrypt rejestruje resztę linii.

numer dziennika proc {} {
interakcja -nobuffer -re "(.*)\r" return
umieszcza $log "[format zegara [sekundy zegara]]: wybrany $interact_out(1,string)"
}

interakcja -nobuffer "atd" numer dziennika

Podczas interakcji, poprzednie użycie log_użytkownik jest ignorowany. W szczególności, interakcji będzie
wymusza rejestrowanie jego wyników (wysyłanie na standardowe wyjście), ponieważ zakłada się, że
użytkownik nie chce wchodzić w interakcje na ślepo.

Połączenia -o flaga powoduje zastosowanie dowolnych następujących par klucz-treść do wyjścia funkcji
obecny proces. Może to być przydatne na przykład w przypadku hostów wysyłających
niechciane znaki podczas sesji telnet.

Domyślnie interakcji oczekuje, że użytkownik będzie zapisywał standardowe wejście i czytał standardowe wyjście
Oczekiwać sam proces. The -u flag (dla „użytkownika”) sprawia interakcji poszukaj użytkownika jako
proces nazwany na podstawie argumentu (który musi być identyfikatorem odrodzenia).

Umożliwia to połączenie dwóch niepowiązanych procesów bez użycia jawnego
pętla. Aby pomóc w debugowaniu, oczekuj diagnostyki, zawsze przechodź do stderr (lub stdout w przypadku
określone informacje dotyczące rejestrowania i debugowania). Z tego samego powodu interpretator
polecenie będzie czytać interaktywnie ze standardowego wejścia.

Przykładowo poniższy fragment tworzy proces logowania. Następnie wybiera numer użytkownika
(nie pokazano) i ostatecznie łączy te dwa elementy razem. Oczywiście może to być dowolny proces
zamiast logowania. Na przykład powłoka umożliwiłaby użytkownikowi pracę bez niej
podanie konta i hasła.

logowanie do spawnu
ustaw login $spawn_id
modem z końcówką odradzania
# zadzwoń ponownie do użytkownika
# połącz użytkownika, aby się zalogować
interakcja -u $logowanie

Aby wysłać dane wyjściowe do wielu procesów, wypisz każdą listę identyfikatorów odradzania poprzedzoną przez a -wyjście
flaga. Dane wejściowe dla grupy wyjściowych identyfikatorów odradzania mogą być określone przez listę identyfikatorów odradzania
poprzedzony przez A -Wejście flaga. (Obydwa -Wejście i -wyjście mogą przyjmować wykazy w tej samej formie
jak -i flaga w oczekiwać polecenie, z tą różnicą, że any_spawn_id nie ma znaczenia w
interakcji.) Wszystkie poniższe flagi i ciągi (lub wzorce) mają zastosowanie do tego wejścia, aż do
pojawia się kolejna flaga -input. Jeśli nie -Wejście pojawia się, -wyjście oznacza „-input
$user_spawn_id -output". (Podobnie w przypadku wzorców, które nie mają -Wejście.) Gdyby
pierwszej -Wejście jest określony, zastępuje $user_spawn_id. Jeśli sekundę -Wejście is
określony, zastępuje $spawn_id. Dodatkowy -Wejście można określić flagi.

Dwa domniemane procesy wejściowe domyślnie mają swoje wyjścia określone jako
$spawn_id i $user_spawn_id (na odwrót). Jeśli -Wejście pojawia się flaga z nr -wyjście
flag, znaki z tego procesu są odrzucane.

Połączenia -i flag wprowadza zamiennik bieżącego spawn_id, gdy nie ma innego -Wejście
or -wyjście używane są flagi. Flaga -i oznacza flagę -o.

Za pomocą można zmieniać procesy, z którymi wchodzi się w interakcję
pośrednie identyfikatory spawnu. (Pośrednie identyfikatory odradzania są opisane w sekcji dotyczącej oczekiwań
polecenie.) Pośrednie identyfikatory odradzania można określić za pomocą opcji -i, -u, -input lub -output
flagi.

interpretator [argumenty]
powoduje, że użytkownik jest interaktywnie monitowany Oczekiwać i polecenia Tcl. The
drukowany jest wynik każdego polecenia.

Działania takie jak złamać i kontynuować struktury kontroli przyczyn (tj. dla, proc) Do
zachowywać się w zwykły sposób. Jednakże powrót powoduje, że interpreter powraca do osoby wywołującej,
Podczas między_powrotami Przyczyny interpretator aby spowodować powrót w wywołującym. Na przykład,
jeśli wywołane zostanie „proc foo”. interpretator który następnie wykonał akcję między_powrotami, proc
bla wróci. Każde inne polecenie powoduje interpretator aby kontynuować monitowanie
nowe polecenia.

Domyślnie zachęta zawiera dwie liczby całkowite. Pierwsza liczba całkowita opisuje głębokość
stosu ewaluacyjnego (tzn. ile razy wywołano Tcl_Eval). Drugi
liczba całkowita jest identyfikatorem historii Tcl. Monit można ustawić, definiując a
procedura zwana „prompt1”, której wartość zwrócona staje się kolejnym monitem. Jeśli
instrukcja zawiera otwarte cudzysłowy, nawiasy, nawiasy klamrowe lub nawiasy klamrowe, dodatkowy monit (wg
domyślnie „+>”) jest wydawane po nowej linii. Podpowiedź pomocniczą można ustawić poprzez zdefiniowanie
procedura zwana „prompt2”.

Podczas interpretator, używany jest tryb ugotowany, nawet jeśli obiekt wywołujący korzystał z trybu surowego.

Jeśli standardowe wejście jest zamknięte, interpretator powróci, chyba że -eof używana jest flaga, w której
w przypadku wywołania kolejnego argumentu.

plik dziennika [argumenty] [[-A] plik]
Jeżeli podana jest nazwa pliku, plik dziennika sporządzi protokół sesji
(począwszy od tego punktu) w pliku. plik dziennika zatrzyma nagrywanie, jeśli nie będzie argumentu
jest podawany. Każdy poprzedni plik dziennika zostanie zamknięty.

Zamiast nazwy pliku można podać identyfikator pliku Tcl, używając metody -otwarty or
-pozostawić otwarte flagi. Jest to podobne do ikra Komenda. (Widzieć ikra po więcej informacji.)

Połączenia -a flag wymusza zapisanie w dzienniku danych wyjściowych, które zostały pominięte przez opcję log_użytkownik dowództwo.

Domyślnie plik dziennika komenda dołącza do starych plików, zamiast je obcinać,
dla wygody możliwości wielokrotnego wyłączania i włączania wylogowywania w jednym czasie
sesja. Aby obciąć pliki, użyj metody -niedołącz flag.

Połączenia -informacje flag powoduje, że plik dziennika zwraca opis najnowszych informacji niebędących informacjami
podane argumenty.

log_użytkownik -info|0|1
Domyślnie okno dialogowe wysyłania/oczekiwania jest rejestrowane na standardowe wyjście (oraz plik dziennika, jeśli jest otwarty).
Rejestrowanie na standardowe wyjście jest wyłączane poleceniem „log_user 0” i włączane ponownie przez
„log_użytkownik 1”. Logowanie do pliku dziennika pozostaje niezmienione.

Połączenia -informacje flag powoduje, że log_user zwraca opis najnowszego nie-informacji
podane argumenty.

mecz_maks [-D] [-ja id_spawnu] [rozmiar]
definiuje rozmiar bufora (w bajtach) używanego wewnętrznie przez oczekiwać. Z nie rozmiar
argument, zwracany jest bieżący rozmiar.

Z -d flagi, ustawiony zostanie domyślny rozmiar. (Początkowa wartość domyślna to 2000.) Z
-i flag, rozmiar jest ustawiany dla nazwanego identyfikatora odradzania, w przeciwnym razie jest ustawiany dla bieżącego
proces.

narzuta [-# id_spawnu] [-# id_spawnu] [...] program [argumenty]
stracony program args w miejscu prądu Oczekiwać program, który się kończy. A
Argument z pustym łącznikiem wymusza łącznik przed nazwą polecenia, tak jakby był to a
powłoka logowania. Wszystkie identyfikatory spawn_id są zamknięte, z wyjątkiem tych nazwanych jako argumenty. Te
są mapowane na nazwane identyfikatory plików.

Identyfikatory Spawn_id są mapowane na identyfikatory plików, które nowy program ma dziedziczyć. Dla
na przykład następująca linia uruchamia szachy i pozwala na kontrolowanie ich przez prąd
proces – powiedzmy, mistrz szachowy.

nakładka -0 $spawn_id -1 $spawn_id -2 $spawn_id szachy

Jest to bardziej wydajne niż „interakcja -u”, jednak wiąże się to z poświęceniem możliwości działania
zaprogramowana interakcja od Oczekiwać proces nie jest już pod kontrolą.

Należy pamiętać, że nie ma terminala sterującego. Tak więc, jeśli rozłączysz lub zmienisz mapowanie
standardowe wejście, programy sterujące zadaniami (powłoki, logowanie itp.) nie będą działać
prawidłowo.

parytet [-D] [-ja id_spawnu] [wartość]
określa, czy parzystość powinna zostać zachowana, czy usunięta z wyjścia spawnowanego
procesy. Jeśli wartość wynosi zero, parzystość jest usuwana, w przeciwnym razie nie jest usuwana.
Z nie wartość argumentu, zwracana jest bieżąca wartość.

Z -d flaga, ustawiana jest domyślna wartość parzystości. (Początkowa wartość domyślna to 1, tj.
parzystość nie jest usuwana.) Z -i flaga, dla nazwanego ustawiana jest wartość parzystości
id spawn, w przeciwnym razie jest ustawiany dla bieżącego procesu.

usuń_nulls [-D] [-ja id_spawnu] [wartość]
określa, czy wartości null są zachowywane, czy usuwane z danych wyjściowych procesów spawnowanych
przed dopasowaniem wzorca lub zapisaniem go w zmiennej oczekiwać_wyjścia or interakcja_out. Jeśli
wartość wynosi 1, wartości null są usuwane. Jeśli wartość wynosi 0, wartości null nie są usuwane. Z nie wartość
argumentu, zwracana jest bieżąca wartość.

Z -d flaga, ustawiana jest wartość domyślna. (Początkowa wartość domyślna to 1, tj. wartości null
są usuwane.) Za pomocą -i flag, wartość jest ustawiana dla nazwanego identyfikatora odradzania, w przeciwnym razie
jest ustawiony dla bieżącego procesu.

Niezależnie od tego, czy wartości null zostaną usunięte, Oczekiwać zapisze bajty zerowe w dzienniku i
wyjście.

wysłać [-flagi] ciąg
Wysyła ciąg do bieżącego procesu. Na przykład polecenie

wyślij „Witaj świecie\r”

wysyła znaki, cześć świat do bieżącego procesu.
(Tcl zawiera polecenie podobne do printf (tzw format), które można dowolnie budować
złożone ciągi znaków.)

Znaki są wysyłane natychmiast, chociaż programy z wejściem buforowanym liniowo nie będą tego robić
czytaj znaki, aż zostanie wysłany znak zwrotny. Zaznaczony jest znak powrotu
"\R".

Połączenia -- flag wymusza interpretację następnego argumentu jako ciągu znaków, a nie jako
flaga. Każdy ciąg znaków może być poprzedzony „--”, niezależnie od tego, czy faktycznie wygląda jak a
flaga. Zapewnia to niezawodny mechanizm określania ciągów zmiennych bez bycia
potknięte przez te, które przypadkowo wyglądają jak flagi. (Wszystkie ciągi znaków zaczynające się od
„-” są zarezerwowane dla przyszłych opcji.)

Połączenia -i flag deklaruje, że ciąg znaków zostanie wysłany do nazwanego spawn_id. Jeśli spawn_id
is identyfikator_spawn_użytkownika, a terminal jest w trybie surowym, znaki nowej linii w ciągu znaków są
przetłumaczone na sekwencje zwrotu nowej linii, tak aby wyglądały tak, jakby terminal był włączony
tryb gotowany. The -surowy flaga wyłącza to tłumaczenie.

Połączenia -zero flaga wysyła znaki zerowe (0 bajtów). Domyślnie wysyłany jest jeden null. Jakiś
liczba całkowita może następować po -zero aby wskazać, ile wartości null należy wysłać.

Połączenia -przerwa flaga generuje warunek przerwania. Ma to sens tylko wtedy, gdy identyfikator odradzania
odnosi się do urządzenia tty otwartego za pomocą „spawn -open”. Jeśli wywołałeś taki proces
jako wskazówka, powinieneś użyć konwencji końcówki do generowania przerwy.

Połączenia -s flag wymusza wysyłanie danych wyjściowych „powoli”, unikając w ten sposób typowej sytuacji, w której
komputer przewyższa bufor wejściowy, który został zaprojektowany dla człowieka, który nigdy by tego nie zrobił
wpisz ten sam bufor. Wyjście to jest kontrolowane przez wartość zmiennej
„send_slow”, który przyjmuje listę dwóch elementów. Pierwszy element jest liczbą całkowitą, która
opisuje liczbę bajtów do wysłania atomowo. Drugi element jest realny
liczba opisująca liczbę sekund, w ciągu których muszą trwać wysyłki atomowe
rozdzielony. Na przykład „set send_slow {10 .001}” zmusi „send -s” do wysłania
ciągi znaków z 1 milisekundą pomiędzy każdymi 10 wysłanymi znakami.

Połączenia -h flag wymusza wysłanie danych wyjściowych (w pewnym stopniu) tak, jak pisze człowiek.
Pomiędzy postaciami pojawiają się ludzkie opóźnienia. (Algorytm opiera się na
Dystrybucja Weibulla, z modyfikacjami dostosowanymi do tego konkretnego zastosowania.) To
wyjście jest kontrolowane przez wartość zmiennej „send_human”, która przyjmuje piątkę
lista elementów. Pierwsze dwa elementy to średni czas między przybyciem postaci
sekundy. Domyślnie używany jest pierwszy. Drugiego używa się na zakończeniach wyrazów, to
symuluj subtelne przerwy, które czasami pojawiają się przy takich przejściach. Trzeci
parametr jest miarą zmienności, gdzie 1 jest dość zmienne, a 1 jest rozsądne
zmienna, a 10 jest całkiem niezmienna. Skrajności wynoszą od 0 do nieskończoności. Ostatnie dwa
parametrami są odpowiednio minimalny i maksymalny czas między przybyciami. Minimum
i maksimum są używane jako ostatnie i „przycinane” po raz ostatni. Ostateczna średnia może być
zupełnie różni się od podanej średniej, jeśli minimalny i maksymalny klip jest wystarczający
wartości.

Przykładowo poniższe polecenie emuluje szybką i konsekwentną maszynistkę:

ustaw wyślij_człowieka {.1 .3 1 .05 2}
send -h „Jestem głodny. Zróbmy lunch.”

natomiast poniższe mogą być bardziej odpowiednie po kacu:

ustaw send_human {.4 .4 .2 .5 100}
send -h "Dobra impreza!"

Należy pamiętać, że błędy nie są symulowane, chociaż można skonfigurować korekcję błędów
sytuacji, osadzając błędy i poprawki w argumencie wysyłania.

Flagi do wysyłania znaków zerowych, do wysyłania przerw, do wymuszania wolnego wyjścia
i w przypadku wyników w stylu ludzkim wzajemnie się wykluczają. Ostatnią wolą będzie tylko ten określony
być użytym. Ponadto nie ciąg argument można określić za pomocą flag do wysłania
znaki zerowe lub przerwy.

Dobrym pomysłem jest poprzedzenie pierwszego wysłać do procesu przez oczekiwać. oczekiwać będzie
poczekaj na rozpoczęcie procesu, póki wysłać Nie mogę. W szczególności, jeśli pierwszy wysłać
zakończy się przed rozpoczęciem procesu, ryzykujesz utratę danych
ignorowane. Można to zrobić w sytuacjach, gdy programy interaktywne nie wyświetlają żadnego monitu
poprzedzać wysłać z opóźnieniem jak w:

# Aby nie dawać hakerom wskazówek, jak się włamać,
# ten system nie pyta o hasło zewnętrzne.
# Poczekaj 5 sekund na zakończenie wykonywania
uruchom telnet bardzo.secure.gov
spać 5
wyślij hasło\r

ex_send jest aliasem dla wysłać. Jeśli używasz Hopek lub innego wariantu
Spodziewaj się w środowisku Tk, wysłać jest przez Tk definiowany zupełnie inaczej
cel, powód. ex_send zapewnia kompatybilność między środowiskami. Podobny
aliasy są dostępne dla innych poleceń wysyłania programu Hope.

Wyślij błąd [-flagi] ciąg
jest jak wysłać, z tą różnicą, że dane wyjściowe są wysyłane do stderr, a nie do prądu
proces.

wyślij_log [-] ciąg
jest jak wysłać, z tą różnicą, że ciąg znaków jest wysyłany tylko do pliku dziennika (patrz plik dziennika.)
Argumenty są ignorowane, jeśli nie jest otwarty żaden plik dziennika.

wyślij_tty [-flagi] ciąg
jest jak wysłać, z tą różnicą, że dane wyjściowe są wysyłane do /dev/tty, a nie do prądu
proces.

wyślij_użytkownika [-flagi] ciąg
jest jak wysłać, z tą różnicą, że dane wyjściowe są wysyłane na standardowe wyjście, a nie do prądu
proces.

spać sekund
powoduje uśpienie skryptu na zadaną liczbę sekund. Sekundy mogą być
liczba dziesiętna. Przerwania (i zdarzenia Tk, jeśli używasz Oczekiwania) są przetwarzane
podczas gdy Spodziewaj się śpi.

ikra [argumenty] program [argumenty]
tworzy nowy uruchomiony proces program args. Jego stdin, stdout i stderr to
połączone z siecią Hope, aby mogły być czytane i zapisywane przez inne osoby Oczekiwać Polecenia.
Połączenie zostaje zerwane przez zamknięte lub jeśli sam proces zamknie którykolwiek plik
identyfikatory.

Kiedy proces zostaje uruchomiony przez ikra, zmienna id_spawnu jest ustawiony na deskryptor
odnosząc się do tego procesu. Proces opisany przez id_spawnu jest uważany za
aktualne wygląda tak. id_spawnu można czytać lub pisać, w efekcie zapewniając kontrolę nad pracą.

identyfikator_spawn_użytkownika jest zmienną globalną zawierającą deskryptor odnoszący się do użytkownika.
Na przykład, kiedy id_spawnu jest ustawiona na tę wartość, oczekiwać zachowuje się jak oczekuj_użytkownika.

error_spawn_id jest zmienną globalną zawierającą deskryptor odnoszący się do
Standardowy błąd. Na przykład kiedy id_spawnu jest ustawiona na tę wartość, wysłać zachowuje się jak
Wyślij błąd.

tty_spawn_id jest zmienną globalną zawierającą deskryptor odnoszący się do /dev/tty.
Jeśli /dev/tty nie istnieje (na przykład w skrypcie cron, at lub wsadowym), to
tty_spawn_id nie jest zdefiniowany. Można to przetestować jako:

if {[info vars tty_spawn_id]} {
# /dev/tty istnieje
} Else {
# /dev/tty nie istnieje
# prawdopodobnie w cron, wsadowym lub w skrypcie
}

ikra zwraca identyfikator procesu UNIX. Jeśli nie zostanie uruchomiony żaden proces, zwracane jest 0. The
zmienna spawn_out(slave,name) jest ustawiona na nazwę urządzenia podrzędnego pty.

Domyślnie ikra powtarza nazwę polecenia i argumenty. The -noecho flaga się zatrzymuje
ikra od zrobienia tego.

Połączenia -konsola flag powoduje przekierowanie danych wyjściowych konsoli do uruchomionego procesu.
Nie jest to obsługiwane we wszystkich systemach.

Wewnętrznie, ikra używa pty, inicjowanego w taki sam sposób jak tty użytkownika. To jest
dalej inicjowane, aby wszystkie ustawienia były „rozsądne” (zgodnie z stty(1)). Jeśli
zmienna stty_init jest zdefiniowany, jest interpretowany w stylu argumentów stty jako
dalsza konfiguracja. Na przykład „set stty_init raw” spowoduje dalsze spawnowanie
terminale procesów, aby rozpocząć w trybie surowym. -nottykopia pomija inicjalizację
na podstawie tty użytkownika. -nottyinit pomija „rozsądną” inicjalizację.

Zazwyczaj ikra wykonanie zajmuje niewiele czasu. Jeśli zauważysz, że spawn zabiera
przez znaczną ilość czasu, prawdopodobnie napotyka zaklinowane pty. A
na ptys przeprowadza się wiele testów, aby uniknąć splątania z błędnymi procesami.
(Zajmuje to 10 sekund na każde zaklinowane pty.) Bieganie Oczekuj z -d pojawi się opcja
if Oczekiwać napotyka wiele pty w dziwnych stanach. Jeśli nie możesz zabić procesów
do którego dołączone są te pty, jedynym rozwiązaniem może być ponowne uruchomienie komputera.

If program nie może zostać pomyślnie spawnowane, ponieważ exec(2) kończy się niepowodzeniem (np. kiedy program
nie istnieje), następny komunikat o błędzie zostanie zwrócony interakcji or oczekiwać
rozkazuj jak gdyby program został uruchomiony i jako wynik wygenerował komunikat o błędzie. Ten
zachowanie jest naturalną konsekwencją wdrożenia ikra. Wewnętrznie, rozmnażaj się
forks, po czym spawnowany proces nie ma możliwości komunikowania się z oryginałem
Oczekiwać proces, z wyjątkiem komunikacji poprzez spawn_id.

Połączenia -otwarty flag powoduje, że następny argument będzie interpretowany jako identyfikator pliku Tcl
(tj. zwrócony przez koncepcja.) Identyfikator odrodzenia może być następnie użyty tak, jakby był spawnem
proces. (Nie należy już używać identyfikatora pliku.) Pozwala to na obróbkę surową
urządzenia, pliki i potoki jako procesy spawnowane bez użycia pty. 0 jest
zwrócony, aby wskazać, że nie ma powiązanego procesu. Kiedy połączenie z
proces spawnowany jest zamknięty, podobnie jak identyfikator pliku Tcl. The -pozostawić otwarte flaga to
podobnego do -otwarty oprócz tego -pozostawić otwarte powoduje pozostawienie identyfikatora pliku otwartego
nawet po zamknięciu identyfikatora odradzania.

Połączenia -pt flag powoduje otwarcie pty, ale nie uruchamia żadnego procesu. 0 jest zwracane
wskazują, że nie ma powiązanego procesu. Spawn_id jest ustawiony jak zwykle.

Zmienna spawn_out(slave,fd) jest ustawiony na identyfikator pliku odpowiadający
mały niewolnik. Można go zamknąć za pomocą „close -slave”.

Połączenia -ignorować flag określa sygnał, który ma być ignorowany w procesie spawnowanym. W przeciwnym razie,
sygnały przyjmują domyślne zachowanie. Sygnały nazywane są jak w pułapka polecenie, z wyjątkiem
że każdy sygnał wymaga osobnej flagi.

strace poziom
powoduje wydrukowanie następujących instrukcji przed wykonaniem. (Ślad Tcl
polecenie śledzi zmienne.) poziom wskazuje, jak daleko w stosie wywołań należy śledzić.
Na przykład następujące polecenie jest uruchamiane: Oczekiwać podczas śledzenia pierwszych 4 poziomów
połączeń, ale żadnego poniżej tego.

oczekiwać -c "strace 4" skrypt.exp

Połączenia -informacje flag powoduje, że strace zwraca opis ostatniej informacji niebędącej informacją
podane argumenty.

stty args
zmienia tryby terminala podobnie jak zewnętrzne polecenie stty.

Domyślnie uzyskiwany jest dostęp do terminala sterującego. Można uzyskać dostęp do innych terminali
dodając „< /dev/tty…” do polecenia. (Zauważ, że argumenty nie powinny być
pogrupowane w jeden argument.)

Żądania statusu zwracają go w wyniku wykonania polecenia. Jeśli nie ma statusu
zażądano i uzyskano dostęp do terminala sterującego, poprzedni stan surowca
a atrybuty echo są zwracane w formie, która może być później wykorzystana przez polecenie.

Na przykład argumenty surowy or -gotowany przełącz terminal w tryb surowy. The
argumenty -surowy or gotowany przełącz terminal w tryb gotowania. Argumenty przegapić i
-Echo ustaw terminal odpowiednio w trybie echa i noecho.

Poniższy przykład ilustruje, jak tymczasowo wyłączyć echo. To mógłby być
używane w skryptach, które w przeciwnym razie byłyby automatyczne, aby uniknąć osadzania w nich haseł. (Zobacz więcej
dyskusję na ten temat w sekcji OCZEKUJ WSKAZÓWEK poniżej.)

stty-echo
send_user "Hasło: "
oczekiwany_użytkownik -re "(.*)\n"
ustaw hasło $expect_out(1,string)
dobre echo

system args
daje args do sh(1) jako dane wejściowe, tak jakby zostało wpisane jako polecenie z pliku a
terminal. Oczekiwać czeka, aż powłoka zakończy działanie. Status powrotu z sh to
traktować w ten sam sposób exec obsługuje status zwrotu.

W odróżnieniu exec który przekierowuje stdin i stdout do skryptu, system wykonuje
brak przekierowania (innego niż wskazane przez sam ciąg znaków). Tak jest
możliwe jest użycie programów, które muszą komunikować się bezpośrednio z /dev/tty. Z tego samego powodu,
wyniki system nie są rejestrowane w dzienniku.

znak czasu [argumenty]
zwraca znacznik czasu. Bez argumentów liczba sekund od epoki wynosi
zwrócony.

Połączenia -format flag wprowadza ciąg znaków, który jest zwracany, ale z dokonanymi podstawieniami
zgodnie z zasadami POSIX dla strftime. Na przykład %a jest zastępowane przez an
skrócona nazwa dnia tygodnia (np. sobota). Inni są:
%a skrócona nazwa dnia tygodnia
%Pełna nazwa dnia tygodnia
%b skrócona nazwa miesiąca
%B pełna nazwa miesiąca
%c data i godzina jak w: środa 6 października 11:45:56 1993
%d dzień miesiąca (01-31)
%H godzina (00-23)
%I godzina (01-12)
%j dzień (001-366)
%m miesiąc (01-12)
%M minut (00-59)
%p rano lub po południu
%S sekunda (00-61)
%u dzień (1-7, poniedziałek jest pierwszym dniem tygodnia)
%U tydzień (00-53, pierwsza niedziela to pierwszy dzień pierwszego tygodnia)
%V tydzień (01-53, styl ISO 8601)
%w dzień (0-6)
%W tydzień (00-53, pierwszy poniedziałek to pierwszy dzień pierwszego tygodnia)
%x data i godzina jak w: środa 6 października 1993
%X czas jak w: 23:59:59
%y rok (00-99)
%Y rok jak w: 1993
Strefa czasowa %Z (lub nic, jeśli nie można jej określić)
%% goły znak procentu

Pozostałe specyfikacje % są nieokreślone. Inne znaki zostaną przepuszczone
nietknięty. Obsługiwane są tylko ustawienia regionalne C.

Połączenia -sekundy flaga wprowadza liczbę sekund od epoki, która ma być używana jako a
źródło, z którego należy sformatować. W przeciwnym razie używany jest aktualny czas.

Połączenia -gmt flag wymusza, aby wyjście znacznika czasu korzystało ze strefy czasowej GMT. Bez flagi,
używana jest lokalna strefa czasowa.

pułapka [[Komenda] sygnały]
powoduje dane komenda do wykonania po otrzymaniu w przyszłości któregokolwiek z podanych
sygnały. Polecenie jest wykonywane w zasięgu globalnym. Jeśli komenda jest nieobecny,
Akcja sygnalizacyjna zostaje zwrócona. Jeśli komenda jest ciągiem SIG_IGN, sygnały są
ignorowane. Jeśli komenda jest ciągiem SIG_DFL, sygnały są wysyłane do systemu
domyślna. Sygnały jest albo pojedynczym sygnałem, albo listą sygnałów. Sygnały mogą być
określone numerycznie lub symbolicznie zgodnie z pkt sygnał(3). Przedrostek „SIG” może być
pominięty.

Bez argumentów (lub argumentu -liczba), pułapka zwraca numer sygnału
aktualnie wykonywane polecenie trap.

Połączenia -kod flag używa kodu powrotu polecenia zamiast kodu Tcl
zamiar powrócić, gdy polecenie zostało pierwotnie uruchomione.

Połączenia -interp flag powoduje, że polecenie jest oceniane przy użyciu interpretera aktywnego w
moment rozpoczęcia wykonywania polecenia, a nie moment zadeklarowania pułapki.

Połączenia -Nazwa flaga powoduje pułapka polecenie, aby zwrócić nazwę sygnału polecenia pułapki
aktualnie wykonywany.

Połączenia -maks. flaga powoduje pułapka polecenie zwrócenia największego możliwego numeru sygnału
być ustawiony.

Na przykład polecenie „trap {send_user „Ouch!”} SIGINT” wyświetli „Ouch!” każdy
czas, w którym użytkownik naciśnie ^C.

Domyślnie przyczyną jest SIGINT (który zwykle można wygenerować poprzez naciśnięcie ^C) i SIGTERM
Spodziewaj się wyjścia. Jest to spowodowane następującą pułapką, utworzoną domyślnie podczas oczekiwania
Zaczyna się.

wyjście z pułapki {SIGINT SIGTERM}

Jeśli użyjesz flagi -D do uruchomienia debugera, SIGINT zostanie ponownie zdefiniowany w celu uruchomienia
interaktywny debuger. Dzieje się tak z powodu następującej pułapki:

pułapka {exp_debug 1} SIGINT

Pułapkę debugera można zmienić, ustawiając zmienną środowiskową
EXPECT_DEBUG_INIT na nowe polecenie pułapki.

Możesz oczywiście zastąpić oba te elementy, po prostu dodając polecenia pułapek do pliku
scenariusz. W szczególności, jeśli masz własny „SIGINT wyjścia z pułapki”, zostanie to zastąpione
pułapka debugera. Jest to przydatne, jeśli chcesz uniemożliwić użytkownikom dostęp do
debuger w ogóle.

Jeśli chcesz zdefiniować własną pułapkę na SIGINT, ale nadal musisz używać pułapki do debugera
działa, użyj:

if {![exp_debug]} {pułapka mystuff SIGINT}

Alternatywnie możesz zastosować pułapkę do debugera za pomocą innego sygnału.

pułapka nie pozwoli ci zastąpić akcji dla SIGALRM, ponieważ jest to używane wewnętrznie
Oczekiwać. Polecenie rozłączenia ustawia SIGALRM na SIG_IGN (ignorowanie). Możesz ponownie włączyć
to tak długo, jak wyłączysz to podczas kolejnych poleceń odradzania.

See sygnał(3) po więcej informacji.

czekać [argumenty]
opóźnia się do momentu zakończenia procesu odrodzonego (lub bieżącego procesu, jeśli żaden nie został nazwany).

czekać zwykle zwraca listę czterech liczb całkowitych. Pierwsza liczba całkowita to pid elementu
proces, na który czekano. Druga liczba całkowita to odpowiedni identyfikator odrodzenia.
Trzecia liczba całkowita to -1, jeśli wystąpił błąd systemu operacyjnego, lub 0 w przeciwnym razie. Jeśli
trzecia liczba całkowita wynosiła 0, czwarta liczba całkowita to status zwracany przez spawnowany
proces. Jeśli trzecia liczba całkowita wynosiła -1, czwarta liczba całkowita jest wartością zestawu errno
przez system operacyjny. Ustawiona jest także zmienna globalna errorCode.

Na końcu zwracanej wartości z mogą pojawić się dodatkowe elementy czekać.
opcjonalny piąty element identyfikuje klasę informacji. Obecnie jedyny
możliwa wartość tego elementu to CHILDKILLED, w którym to przypadku następne dwie wartości to
nazwę sygnału w stylu C i krótki opis tekstowy.

Połączenia -i flag deklaruje proces oczekiwania odpowiadający nazwanemu identyfikatorowi spawn_id (NOT
identyfikator procesu). Wewnątrz procedury obsługi SIGCHLD możliwe jest oczekiwanie na pojawienie się dowolnego spawnu
proces przy użyciu identyfikatora odradzania -1.

Połączenia -nie, czekaj flaga powoduje natychmiastowy powrót oczekiwania ze wskazaniem a
pomyślne oczekiwanie. Kiedy proces zakończy się (później), zniknie automatycznie
bez konieczności wyraźnego czekania.

Połączenia czekać można również użyć polecenia oczekiwania na rozwidlenie procesu, używając argumentów „-i
-1”. W przeciwieństwie do użycia z procesami spawnowanymi, to polecenie może zostać wykonane w dowolnym miejscu
czas. Nie ma kontroli nad tym, który proces zostanie zrealizowany. Jednak wartość zwracana
można sprawdzić pod kątem identyfikatora procesu.

BIBLIOTEKI


Spodziewaj się automatycznie, że wie o dwóch wbudowanych bibliotekach dla skryptów Spodziewaj się. To są
zdefiniowane przez katalogi nazwane w zmiennych exp_library i exp_exec_library. Obydwa
mają zawierać pliki narzędziowe, które mogą być używane przez inne skrypty.

exp_library zawiera pliki niezależne od architektury. exp_exec_library zawiera
pliki zależne od architektury. W zależności od systemu oba katalogi mogą być całkowicie
pusty. Istnienie pliku $exp_exec_library/cat-buffers opisuje, czy plik
/kosz/kot domyślnie bufory.

ŁADNY DRUK


Do ładnego drukowania dostępna jest definicja vgrind Oczekiwać skrypty. Zakładając, że vgrind
definicja dostarczona z Oczekiwać dystrybucja jest poprawnie zainstalowana, możesz z niej korzystać
jako:

plik vgrind -lexpect

PRZYKŁADY


Dla wielu nie jest jasne, jak złożyć wszystko w całość opisaną na stronie podręcznika. I
zachęcamy do przeczytania i wypróbowania przykładów w przykładowym katalogu pliku Oczekiwać
dystrybucja. Niektóre z nich to prawdziwe programy. Inne są po prostu ilustracją pewnych
technik i oczywiście kilka to tylko szybkie triki. Plik INSTALL zawiera opcję szybkiego dostępu
przegląd tych programów.

Połączenia Oczekiwać przydatne są również artykuły (patrz ZOBACZ TAKŻE). Podczas gdy niektóre artykuły używają składni
odpowiadające wcześniejszym wersjom Oczekiwania, towarzyszące uzasadnienia są nadal aktualne
i przejdź do znacznie bardziej szczegółowych informacji niż ta strona podręcznika.

OSTRZEŻENIA


Rozszerzenia mogą kolidować z nazwami poleceń programu Hope. Na przykład, wysłać określa Tk
w zupełnie innym celu. Z tego powodu większość Oczekiwać polecenia też są
dostępne jako „exp_XXXX”. Polecenia i zmienne rozpoczynające się od „exp”, „inter”, „spawn”,
i „limit czasu” nie mają aliasów. Jeśli tego potrzebujesz, użyj rozszerzonych nazw poleceń
kompatybilność między środowiskami.

Oczekiwać ma raczej liberalne podejście do ustalania zakresu. W szczególności zmienne odczytywane przez polecenia
specyficzne dla Oczekiwać program będzie poszukiwany w pierwszej kolejności o zasięgu lokalnym, a jeśli nie
znalezione w zasięgu globalnym. Eliminuje to na przykład potrzebę umieszczania „globalnego limitu czasu”
w każdej procedurze, którą piszesz, która używa oczekiwać. Z drugiej strony zapisywane są zmienne
zawsze w zasięgu lokalnym (chyba, że ​​zostało wydane polecenie „globalne”). Najpopularniejszy
Problem, który powoduje, polega na tym, że spawn jest wykonywany w procedurze. Poza procedurą,
id_spawnu już nie istnieje, więc wywołany proces nie jest już dostępny po prostu dlatego
zakresu. Dodaj „globalny spawn_id” do takiej procedury.

Jeśli nie możesz włączyć funkcji multispawningu (tj. Twój system nie obsługuje żadnej z nich
wybierz (BSD *.*), odpytuj (SVR>2) ani coś równoważnego), Oczekiwać tylko będzie mógł
kontrolować pojedynczy proces na raz. W takim przypadku nie próbuj ustawiać id_spawnu, ani
czy powinieneś wykonywać procesy poprzez exec, gdy uruchomiony jest proces. Ponadto,
nie będziesz w stanie oczekiwać z wielu procesów (w tym użytkownika jako jednego) w
w tym samym czasie

Parametry terminala mogą mieć duży wpływ na skrypty. Na przykład, jeśli napisano skrypt
szukać echa, będzie się zachowywał nieprawidłowo, jeśli echo zostanie wyłączone. Z tego powodu oczekuj
domyślnie wymusza rozsądne parametry terminala. Niestety, to może coś zmienić
nieprzyjemne dla innych programów. Na przykład powłoka emacsa chce zmienić „zwykłe”
mapowania: znaki nowej linii są mapowane na znaki nowej linii zamiast na znak nowej linii powrotu karetki i echo
jest niepełnosprawny. Dzięki temu można używać emacsa do edycji linii wejściowej. Niestety, spodziewaj się
nie mogę się tego domyślić.

Możesz zażądać, aby oczekiwanie nie zastępowało domyślnych ustawień parametrów terminala, ale
musisz więc zachować szczególną ostrożność podczas pisania skryptów dla takich środowisk. W przypadku
emacs, unikaj polegania na takich rzeczach jak echo i mapowania końca linii.

Polecenia akceptujące argumenty zostały zebrane w pojedynczą listę (the oczekiwać warianty i
interakcji) użyj heurystyki, aby zdecydować, czy lista faktycznie zawiera jeden argument, czy wiele. The
heurystyka może zawieść tylko w przypadku, gdy lista faktycznie reprezentuje pojedynczą
argument, który ma wiele osadzonych \n i między nimi znaków innych niż białe.
Wydaje się to wystarczająco nieprawdopodobne, jednakże argumentu „-nobrace” można użyć, aby wymusić a
pojedynczy argument, który należy traktować jako pojedynczy argument. Można to ewentualnie wykorzystać
wygenerowany maszynowo kod oczekiwań. Podobnie -brace wymusza traktowanie pojedynczego argumentu jako
wiele wzorców/działań.

Użyj funkcji oczekuj online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad