Samouczek TCL TK: Język poleceń narzędzi
Co to jest TCL?
TCL to aplikacja powłoki, która odczytuje polecenia TCL ze standardowego wejścia lub z pliku i daje pożądane wyniki.
TCL to język skryptowy oparty na ciągach znaków, a także język proceduralny. Został on stworzony po raz pierwszy przez Johna Osterhouta w 1989. Celem rozwoju tego języka jest łatwe osadzanie aplikacji inti(). Język ten jest powszechnie używany w GUI i testach. Na przykład szybkie prototypowanie, Testowanie interakcja z bazą danych itp. W TCL domyślnie wszystko jest ciągiem znaków.
W tym samouczku dowiesz się:
- Co to jest TCL
- Jak wykonać TCL
- Skrypty TCL
- TCL Rodzaj podstawienia
- Zmienna TCL
- Wyrażenie TCL i OperaTor
- Kontrola przepływu TCL i podejmowanie decyzji
Jak wykonać TCL
Istnieją dwa sposoby wykonania kodu TCL
- Windows aplikacja jest dostępna tutaj plik exe tcltutor
- Aplikacja oparta na Linuksie
In Linux interaktywny interpreter, możemy wykonać skrypty TCL jak poniżej
Aby uzyskać dostęp do sesji interaktywnej TCL, wykonaj następujące polecenie
Skrypty TCL
Program TCL powinien mieć rozszerzenie .tcl. Każdy skrypt w UNIX/LINUX zaczyna się od ścieżki powłoki TCL
#!/usr/bin/tclsh
Przykład:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Wydajność: Witaj świecie
W TCL polecenie „Puts” służy do drukowania komunikatów na konsoli. Składnia puts jest poniżej
stawia?-nonewline? ?ID kanału? strunowy
- Brak linii: Ten opcjonalny parametr domyślnie pomija znak nowego wiersza. Umieszcza nową linię do każdego ciągu
- ID kanału: Ten parametr używany dla standardowego kanału wejściowego (stdin) i standardowego kanału wyjściowego (stdout).
Były:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
TCL Rodzaj podstawienia
W TCL występują trzy rodzaje podstawień
- Zastępowanie poleceń
- Podstawianie zmiennych
- Podstawienie ukośnika odwrotnego
Studiujmy jeden po drugim
Zastępowanie poleceń
Do podstawienia poleceń używa się nawiasów kwadratowych.
Przykład:-
% puts [expr 1*3] % 3
Tutaj polecenie między nawiasami kwadratowymi jest oceniane jako pierwsze. Wyniki są zwracane .”expr” używane do wykonywania obliczeń arytmetycznych.
Podstawianie zmiennych
TCL dokonuje podstawienia zmiennych za pomocą $ znak.
Przykład:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Tutaj tworzymy zmienną o nazwie „a” i ustawiamy dla niej wartość „10”.
- puts a : Wypisuje na konsoli ciąg „a”, ale nie wartość „a”.
- puts $a: Wypisuje wartość „a” na konsoli
Wykonajmy to i zweryfikujmy. Otrzymasz wynik jak poniżej.
$ ./substitution.tcl
a
10
Podstawienie ukośnika odwrotnego
W Tcl ukośnik odwrotny jest używany do ucieczki znaków specjalnych, a także do rozprzestrzeniania długich poleceń na wiele wierszy. Każdy znak bezpośrednio następujący po ukośniku odwrotnym pozostanie bez podstawienia. W poniższym przykładzie możesz zobaczyć znak specjalny ” “, pozostaje po ukośniku odwrotnym.
Sprawdźmy to na przykładzie
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
NOTATKA: -Do komentowania dowolnego ciągu znaków w TCL używany jest znak „#”. Wszystkie znaki po „#” są ignorowane przez polecenie powłoki tclsh.
Zmienna TCL
Zmienna to identyfikator przechowujący wartość. Innymi słowy, zmienna jest odniesieniem do pamięci komputera, w której przechowywana jest wartość.
Zmienne są tworzone za pomocą polecenia „set”, a w nazwach zmiennych rozróżniana jest wielkość liter. Oznacza to: cześć, cześć, cześć, w TCL wszystko jest inne. Spójrz na przykład zmiennej rozróżniającej wielkość liter.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Wynik:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Tworzenie zmiennych TCL
Aby utworzyć zmienne w TCL, musisz użyć "ustawić" komenda
Ustaw 10
Aby uzyskać wartość zmiennej, należy użyć symbolu „$”, np
% umieścić $a
% 10
Otrzymujemy więc wartość zmiennej „a” jako 10.
Istnieją informacje o poleceniu TCL
Polecenie „set” służy do tworzenia i odczytywania zmiennych, jak pokazano powyżej. Polecenie unset służy do niszczenia zmiennej. Polecenie „info exists” zwraca 1, jeśli varName istnieje jako zmienna (lub element tablicy) w bieżącym kontekście, w przeciwnym razie zwraca 0. (zobacz przykład poniżej).
W TCL dostępne są różne polecenia „info”, takie jak „info istnieje”, „funkcje informacyjne”, „informacje globalne” i tak dalej. Tutaj zobaczymy przykład „informacja istnieje”.
Były:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Różne aparaty ortodontyczne i ich zachowanie
{} -> Nawiasy klamrowe
Nawiasy klamrowe w TCL grupują słowa, tworząc argumenty. Nawiasy klamrowe służą do zdefiniowania bloku, który ma zostać odroczony – innymi słowy, może zostać uruchomiony PO pozostałej części polecenia w bieżącym wierszu. Znaki w nawiasach są przekazywane do polecenia dokładnie w takiej formie, w jakiej zostały zapisane.
Kilka punktów do zapamiętania
- Podstawianie zmiennych nie jest dozwolone w nawiasach klamrowych {}
- Służył do tworzenia typu danych listy
Przykład:-
% set x 10 % puts {$x} % $x
%set liczba {1 2 3 4 5} -> Tutaj liczba jest typem danych listy
%wstawia liczbę $
%1 2 3 4 5
[] -> nawiasy kwadratowe
Nawiasy kwadratowe służą do tworzenia zagnieżdżonych poleceń. Mówiąc prościej, wynik jednego polecenia przekazywany jako argument do innego polecenia. Nawiasy kwadratowe służą do definiowania bloku, który jest uruchamiany PRZED resztą polecenia w bieżącym wierszu, a wynik jest podstawiany do wiersza.
Były: -
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> nawiasy okrągłe
To polecenie służy do tworzenia typu danych tablicowych oraz określania pierwszeństwa operatorów.
% set a(1) 10 % set a(2) 20
Tutaj „a” jest tablicą o wartościach 10 i 20. Zobacz poniższe polecenia, aby wydrukować klucze, pary klucz-wartość i wartości tablicy.
% puts [array get a] -> To print key value pairs we use this command % 1 10 2 20 % puts [array names a] -> To print only keys % 1 2 % puts $a(1) -> To print first value of array % 10 % puts $a(2) -> To print second value of array % 20
Aby wydrukować „N-tą” wartość tablicy a, użyjemy Puts $a(N)
Argumenty wiersza poleceń TCL
Elementy danych przekazywane do skryptu z wiersza poleceń nazywane są argumentami. Liczba argumentów wiersza poleceń do skryptu Tcl jest przekazywana jako zmienna globalna argc . Nazwa skryptu Tcl jest przekazywana do skryptu jako zmienna globalna argv0 , a pozostałe argumenty wiersza poleceń są przekazywane jako lista argumentacja.
TCL ma 3 predefiniowane zmienne, takie jak
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Były:-
arg-script.tcl #!/usr/bin/tclsh< puts "number of arguments passed to the scripts : $argc" puts "list of arguments are passed to the script: $argv" puts "the name of scripts is: $argv0"
$ ./arg-script.tcl 10 20 30
wydajność:-
- Liczba argumentów przekazanych do skryptów: 3
- Do skryptu przekazywana jest lista argumentów: 10 20 30
- Nazwa skryptu to: arg-script.tcl
Wyrażenie TCL i OperaTor
Wyrażenie jest konstruowane z operandów i operatorów. Jest oceniane za pomocą polecenia „expr”. Operatory są oceniane na podstawie pierwszeństwa i asocjatywności. Język TCL ma wbudowane operatory, jak poniżej
Operakategoria | symbol | Pierwszeństwo/łączność |
---|---|---|
Arytmetyka OperaTor | + - * /% | Od lewej do prawej |
Relacyjny OperaTor | == != < > <= >= | Od lewej do prawej |
logiczny OperaTor | && || ! | Od lewej do prawej |
Bitowy OperaTor | & | ^ ~ | Od lewej do prawej |
Potrójny OperaTor | ?: | Od prawej do lewej |
Shift OperaTor | << >> | Od lewej do prawej |
Porównanie ciągów OperaTor | równoważne | Od lewej do prawej |
Potęgowanie OperaTor | ** | Od lewej do prawej |
Lista OperaTor | w ni | Od lewej do prawej |
Arytmetyka OperaTor
Wyrażenie TCL składa się z kombinacji operandów, operatorów i nawiasów. Zobaczmy przykład operatorów arytmetycznych w TCL
+ Dodaj dwa lub więcej operandów
Były:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
- Odejmuje dwa lub więcej operandów
Były:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
*Mnożenie dwóch lub więcej operandów
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Podziel licznik przez mianownik
%set a 20 %set b 10 %puts [expr $a / $b] 2
Operator modulo dzieli licznik przez dzielnik, ale zwraca przypomnienie
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relacyjny OperaTor
Sprawdza, czy wartość lewego operandu jest większa od wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Sprawdź, czy wartość lewego operandu jest mniejsza od wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Sprawdza, czy wartość lewego operandu jest większa lub równa wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Sprawdza, czy wartość lewego operandu jest mniejsza lub równa wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Sprawdza, czy wartości dwóch operandów są równe, czy nie. Jeśli wartości nie są równe, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Sprawdza, czy wartości dwóch operandów są równe, czy nie. Jeśli tak, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0.
%set a 20 %set b 10 %puts [expr $a == $b] 0
logiczny OperaTor
&& Jeśli oba operandy są różne od zera, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Jeśli którykolwiek z dwóch operandów jest różny od zera, warunek staje się prawdziwy i zwraca 1, w przeciwnym razie zwraca 0
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Służy do odwracania wyniku dowolnego wyrażenia. Tutaj na wyjściu widać, że wartość „a” zmieniła się teraz na 1 z 0. Podczas gdy wartość „b” zmieniła się na 0 z 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
Bitowy OperaTor
& (bitowe i) wykonują operację bitową i postępują zgodnie z poniższą tabelą.
A | B | A i B. |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Były:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 1 0 1 0 0 So now as per above tabular rules A & B will be 0 0 0 0 0 0 0 0
| (bitowo lub) wykonaj operację bit po bicie i postępuj zgodnie z poniższą tabelą
A | B | | b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Były:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 1 0 1 0 0 So now as per above tabular rules A | B will be 0 0 0 1 1 1 1 0
^ (wyłącznie bitowe lub) wykonaj operację bit po bicie i postępuj zgodnie z poniższą tabelą
A | B | A^B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Były:-
%set A 10 %set B 20 Follow the sequence to convert decimal to binary number 128 64 32 16 8 4 2 1 10 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 0 1 0 1 0 20 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 1 0 1 0 0 So now as per above tabular rules A ^ B will be 0 0 0 1 1 1 1 0 à 30
Operator ~ (negacji bitowej) zmienia każde 1 na 0 i 0 na 1, patrz tabela jako odniesienie
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7 %puts [expr ~$A] -8
Potrójny Operator (?:)
Składnia jest
condition-expression? expression_1: expression_2
Jeżeli warunek-wyr jest prawdziwy, obliczane jest wyr1 i zwracany jest wynik. Jeżeli cond-exp ma wartość false, obliczane jest wyrażenie exp2 i zwracany jest jego wynik. W naszym przykładzie wyrażenie 1 jest prawdziwe, ponieważ wartość A jest większa niż 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift OperaTor
Shift operator jest oznaczony albo operatorem przesunięcia w lewo <<, albo operatorem przesunięcia w prawo >>. W przypadku operatora przesunięcia w lewo << wartość lewego operandu jest przesuwana w lewo o liczbę bitów określoną przez prawy operand.
%set A 7 %set result [expr $A << 2] %puts $result
W przypadku operatora przesunięcia w prawo >> wartość lewego operandu jest przesuwana w prawo o liczbę bitów określoną przez prawy operand.
%set A 7 %set result [expr $A >> 2] %puts $result
Porównanie ciągów OperaTor
Operator porównania ciągów znaków porównuje wartość obu operandów. Jeśli wartość operandu jest taka sama, zwróci 1, w przeciwnym razie zwróci 0. W przykładzie wartość dla A i B wynosi 7, dlatego wynik zwraca 1.
Były:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (jeśli wartości obu operandów są różne, zwrócona zostanie wartość 1, w przeciwnym wypadku zwrócona zostanie wartość 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Operator potęgowania
Pow () i ** oba są takie same. Zawsze zwraca wartość zmiennoprzecinkową.
** wskazuje moc żądanego operandu.
Były:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Lista OperaTor
Jeśli żądana wartość zostanie znaleziona na zdefiniowanej liście, zwraca 1, w przeciwnym razie zwraca 0. W przykładzie wartość 1 istnieje w zmiennej „a”, dlatego zwróci 1.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
ni, jeśli żądana wartość zostanie znaleziona na zdefiniowanej liście, zwróci 0, w przeciwnym razie zwróci 1.
Były :-
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
Kontrola przepływu TCL i podejmowanie decyzji
Istnieją różne polecenia sterujące przepływem i podejmowania decyzji, które są używane do zmiany przebiegu programu. Wykonania programu zawsze rozpoczynają się od góry pliku źródłowego w dół.
Instrukcja if składa się z wyrażenia logicznego, po którym następuje jedna lub więcej instrukcji.
Jeśli... oświadczenie
Składnia:-
jeśli wyrażenie? to? ciało
jeśli wyrażenie ma wartość true, wówczas wykonywana jest treść polecenia.
Były:-
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
Jeśli...inne stwierdzenie
Składnia :-
Jeśli wyrażenie? następnie body_1, w przeciwnym razie body_2
Jeśli wyrażenie ma wartość true, zwróci treść_1, w przeciwnym razie zwróci treść_2
Były:--
set age 10 if {$age < 20} { puts "Age is less than 20" } else { Puts "Age is greater than 20" } output: Age is less than 20
Zagnieżdżona instrukcja if..else
Oznacza to, że jedną instrukcję if lub else..if można umieścić w innej instrukcji if lub else..if.
Składnia:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Były:--
set a 10 set b 20 if {$a == 10} { # if expression_1 is true then it will go to expression_2 if {$b == 20} { #if expression_2 is true then it will print the below string puts "value of a is 10 and b is 20" } } o/p: value of a is 10 and b is 20
Instrukcja zamiany
Instrukcja switch umożliwia sprawdzenie równości zmiennej z listą wartości. Ocenia listę wartości i zwraca wynik tej oceny. Jeśli żadna wartość nie pasuje, zostaną zwrócone wartości domyślne.
Przykład:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
Przełącznik zagnieżdżony
Zagnieżdżona instrukcja switch oznacza instrukcję switch wewnątrz instrukcji switch.
Składnia :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
Przykład:W poniższym przykładzie wartość a wynosi 100, a za pomocą tego samego kodu przełączamy instrukcję dla innej wartości b, która wynosi 200. Polecenie out wyświetli wartość zarówno dla a, jak i b.
#!/usr/bin/tclsh set a 100 set b 200 switch $a { 100 { puts "The value of a is $a" switch $b { 200 { puts "The value of b is $b" } } } }
Wynik:-
Wartość a wynosi 100
Wartość b wynosi 200
Instrukcja pętli TCL
Instrukcja pętli umożliwia wielokrotne wykonywanie instrukcji lub grupy instrukcji. Tcl udostępnia następujące typy instrukcji pętli.
Podczas wykonywania polecenia
Gdy dany warunek jest prawdziwy, wówczas powtarza się instrukcja lub grupa instrukcji znajdujących się w treści pętli.
Składnia:
While {condition} { Statements }
Były :-
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Wynik:-
a wynosi 10
a wynosi 11
W powyższym przykładzie użyto wbudowanego polecenia „incr”. Oznacza to, że wartość „a” będzie zwiększana o 1 aż do wartości maksymalnej (<12).
Na polecenie
Wykonuje sekwencję instrukcji wielokrotnie w oparciu o wartość licznika. Jest on automatycznie zwiększany lub zmniejszany podczas każdego powtórzenia pętli.
Składnia :-
For {start} {test} {next} { Body }
Przykład: W poniższym przykładzie wartość „i” jest ustawiona na 0 i zwiększana do wartości <5.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Wynik:-
0 1 2 3 4
Podsumowując:
- TCL to język skryptowy oparty na ciągach znaków, a także język proceduralny
- Język ten jest powszechnie używany w GUI i testach
- W TCL domyślnie wszystko jest ciągiem znaków
- TCL to aplikacja powłoki, która odczytuje polecenia TCL ze standardowego wejścia lub z pliku i daje pożądane wyniki.
- Program TCL powinien mieć rozszerzenie .tcl