TCL TK Vodič: Alatni naredbeni jezik
Što je TCL?
TCL je shell aplikacija koja čita TCL naredbu sa svog standardnog ulaza ili iz datoteke i daje željene rezultate.
TCL je skriptni jezik temeljen na nizovima i proceduralni jezik. Prvi ga je stvorio John Osterhout 1989. Svrha razvoja ovog jezika je jednostavno ugrađivanje inti ( ) aplikacija. Jezik se obično koristi za GUI i testiranje. Na primjer, brza izrada prototipa, Ispitivanje interakcija baze podataka itd. U TCL-u prema zadanim postavkama sve je string.
U ovom vodiču naučit ćete-
- Što je TCL
- Kako izvršiti TCL
- TCL skripte
- TCL Vrsta zamjene
- TCL varijabla
- TCL Expression i Operahumka
- TCL kontrola toka i donošenje odluka
Kako izvršiti TCL
Postoje dva načina za izvršavanje TCL koda
- Windows temeljena aplikacija dostupna je ovdje tcltutor exe datoteka
- Aplikacija temeljena na Linuxu
In Linux interaktivnog tumača, možemo izvršiti TCL skripte kao u nastavku
Za pristup TCL interaktivnoj sesiji, izvršite sljedeću naredbu
TCL skripte
TCL program treba imati ekstenziju .tcl. Svaka skripta u UNIX-u/LINUX-u počinje putem TCL ljuske
#!/usr/bin/tclsh
Primjer:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Izlaz: Pozdrav svijete
U TCL-u, naredba “Puts” koristi se za ispis poruka na konzolu. Sintaksa puts je ispod
stavlja?-nonewline? ?channelId? niz
- Bez novog retka: Ovaj izborni parametar potiskuje znak novog retka prema zadanoj naredbi. Stavlja novi red u svaki niz
- Channelid: Ovaj parametar se koristi za standardni ulazni kanal (stdin) i standardni izlazni kanal (stdout).
Primjer: -
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
TCL Vrsta zamjene
Postoje tri vrste zamjena u TCL-u
- Zamjena naredbi
- Varijabilna supstitucija
- Zamjena obrnute kose crte
Učimo jedno po jedno
Zamjena naredbi
Uglate zagrade koriste se za zamjenu naredbi.
Primjer:-
% puts [expr 1*3] % 3
Ovdje se prvo procjenjuje naredba između uglatih zagrada. Rezultat se vraća .”expr” koji se koristi za izvođenje aritmetičkog izračuna.
Varijabilna supstitucija
TCL izvodi zamjenu varijable uz pomoć $ znak.
Primjer:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Ovdje stvaramo varijablu pod nazivom "a" i postavljamo joj vrijednost "10".
- stavlja a : ispisat će niz "a", ali ne i vrijednost 'a' na konzolu
- stavlja $a : ispisat će vrijednost 'a' na konzolu
Izvršimo i provjerimo. Dobit ćete izlaz kao u nastavku.
$ ./substitution.tcl
a
10
Zamjena obrnute kose crte
U Tcl-u se obrnuta kosa crta koristi za izbjegavanje posebnih znakova kao i za širenje dugih naredbi u više redaka. Svaki znak odmah iza kose crte stoji bez zamjene. U donjem primjeru možete vidjeti poseban znak ” “ koji ostaje nakon obrnute kose crte.
Potvrdimo to primjerom
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
BILJEŠKA: -Za komentiranje bilo kojeg niza u TCL-u koristi se “#”. Naredba tclsh ljuske zanemaruje sve znakove nakon “#”.
TCL varijabla
Varijabla je identifikator koji sadrži vrijednost. Drugim riječima, varijabla je referenca na memoriju računala, gdje je pohranjena vrijednost.
Varijable se kreiraju pomoću "set naredbe" i svi nazivi varijabli razlikuju velika i mala slova. To znači zdravo, zdravo, zdravo svi su različiti u TCL-u. Pogledajte neki primjer za varijablu osjetljivu na velika i mala slova.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Izlaz:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Stvaranje TCL varijabli
Da biste stvorili varijable u TCL-u, trebate koristiti “set” naredba
Postavite 10
Da biste dobili vrijednost varijable, morate koristiti simbol "$" poput
% staviti $a
10%
Tako dobivamo vrijednost varijable 'a' kao 10.
Informacije o TCL naredbi postoje
Naredba “set” koristi se za stvaranje i čitanje varijabli kao što je prikazano gore. Naredba unset koristi se za uništavanje varijable. Naredba “info exists” vraća 1 ako varName postoji kao varijabla (ili element niza) u trenutnom kontekstu, inače vraća 0. (vidi primjer u nastavku).
Postoje razne "info" naredbe u TCL-u kao što su "info postoji", "info funkcije", "info global", i tako dalje. Ovdje ćemo vidjeti primjer "info postoji".
Primjer: -
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Različiti aparatići za zube i njihovo ponašanje
{} -> vitičaste zagrade
Vitičaste zagrade u TCL-u grupiraju riječi kako bi postale argumenti. Vitičaste zagrade koriste se za definiranje bloka koji je odgođen – drugim riječima, može se pokrenuti NAKON ostatka naredbe u trenutnom retku. Znakovi unutar vitičastih zagrada prosljeđuju se naredbi točno onako kako su napisani.
Neke točke koje treba zapamtiti
- Zamjena varijable nije dopuštena unutar {} zagrada
- Koristio se za stvaranje vrste podataka popisa
Primjer:-
% set x 10 % puts {$x} % $x
%set broj {1 2 3 4 5} -> Ovdje je broj vrsta podataka popisa
%stavlja $broj
%1 2 3 4 5
[] -> uglaste zagrade
Uglate zagrade koriste se za stvaranje ugniježđene naredbe. Jednostavno rečeno, izlaz jedne naredbe proslijeđen kao argument drugoj naredbi. Uglate zagrade koriste se za definiranje bloka koji se izvodi PRIJE ostatka naredbe u trenutnom retku, a rezultat se zamjenjuje u retku.
Primjer: –
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> okrugle zagrade
Ova se naredba koristi za stvaranje vrste podataka niza i također ukazuje na prednost operatora.
% set a(1) 10 % set a(2) 20
Ovdje je "a" polje s vrijednostima 10 i 20. Pogledajte donje naredbe za ispis ključeva, parova ključeva vrijednosti i vrijednosti niza.
% 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
Za ispis “N-te” vrijednosti niza a koristit ćemo Puts $a(N)
Argumenti TCL naredbenog retka
Stavke podataka proslijeđene skripti iz naredbenog retka poznate su kao argumenti. Broj argumenata naredbenog retka za Tcl skriptu prosljeđuje se kao globalna varijabla argc . Ime Tcl skripte prosljeđuje se skripti kao globalna varijabla argv0 , a ostatak argumenata naredbenog retka prosljeđuje se kao popis u argv.
TCL ima 3 unaprijed definirane varijable kao što su
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Primjer:–
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
izlaz:-
- Broj argumenata proslijeđenih skripti: 3
- Popis argumenata prosljeđuje se skripti: 10 20 30
- Naziv skripte je: arg-script.tcl
TCL Expression i Operahumka
Izraz se sastoji od operanda i operatora. Procjenjuje se naredbom "expr". Operatorovi se ocjenjuju na temelju prvenstva i asocijativnosti. TCL jezik ima ugrađene operatore kao što je prikazano u nastavku
Operator Kategorija | Simbol | Precedencija/Asocijativnost |
---|---|---|
Aritmetika Operahumka | + - * / % | S lijeva nadesno |
Relacijski Operahumka | == != < > <= >= | S lijeva nadesno |
logičan Operahumka | && || ! | S lijeva nadesno |
Bitno Operahumka | & | ^ ~ | S lijeva nadesno |
Trostruki Operahumka | ?: | S desna na lijevo |
Shift Operahumka | << >> | S lijeva nadesno |
Usporedba nizova Operahumka | eq ne | S lijeva nadesno |
eksponenciranje Operahumka | ** | S lijeva nadesno |
Popis Operahumka | U ni | S lijeva nadesno |
Aritmetika Operahumka
TCL izraz sastoji se od kombinacije operanda, operatora i zagrada. Pogledajmo primjer aritmetičkih operatora u TCL-u
+ Dodajte dva ili više operanda
Primjer: -
%set a 10 %set b 20 %puts [expr $a + $b] 30
- Oduzima dva ili više operanda
Primjer: -
%set a 20 %set b 10 %puts [expr $a - $b] 10
*Množenje dva ili više operanda
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Podijeli brojnik brojnikom
%set a 20 %set b 10 %puts [expr $a / $b] 2
% Operator modula dijeli brojnik denumeratorom, ali vraća podsjetnik
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relacijski Operahumka
Provjerava je li vrijednost lijevog operanda veća od vrijednosti desnog operanda. Ako da, tada uvjet postaje istinit i vraća 1 inače vraća 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Provjerite je li vrijednost lijevog operanda manja od vrijednosti desnog operanda. Ako da, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Provjerava je li vrijednost lijevog operanda veća ili jednaka vrijednosti desnog operanda, ako da, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Provjerava je li vrijednost lijevog operanda manja ili jednaka vrijednosti desnog operanda, ako da, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Provjerava jesu li vrijednosti dvaju operanda jednake ili ne, ako vrijednosti nisu jednake tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Provjerava jesu li vrijednosti dvaju operanda jednake ili ne, ako jesu, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 20 %set b 10 %puts [expr $a == $b] 0
logičan Operahumka
&& Ako su oba operanda različita od nule, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Ako bilo koji od dva operanda nije nula, tada uvjet postaje istinit i vraća 1 inače vraća 0
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Koristi se za poništavanje rezultata bilo kojeg izraza. Ovdje u izlazu možete vidjeti da je vrijednost 'a' sada postala 1 od 0. Dok je vrijednost 'b' postala 0 od 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
Bitno Operahumka
& (po bitovima i) izvedite operaciju bit po bit i slijedite donju tablicu za rad.
A | B | A & B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Primjer: -
%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
| (po bitovima ili) izvedite operaciju bit po bit i slijedite donju tablicu
A | B | A | B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Primjer: -
%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
^ (bitwise exclusive or) izvodi bit po bit operaciju i slijedi donju tablicu
A | B | A ^ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Primjer: -
%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
~ (bitno negacija) operator mijenja svaki 1 u 0 i 0 u 1, slijedite tablicu kao referencu
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7 %puts [expr ~$A] -8
Trostruki Operator (? :)
Sintaksa je
condition-expression? expression_1: expression_2
Ako je uvjet-exp istinit, exp1 se procjenjuje i vraća se rezultat. Ako je cond-exp netočan, exp2 se procjenjuje i vraća se njegov rezultat. U našem primjeru, exp1 je istinit jer je vrijednost A veća od 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operahumka
Shift operator se označava << operatorom lijevog pomaka ili >> desnim operatorom pomaka. Za << operator pomaka ulijevo, vrijednost lijevog operanda pomiče se ulijevo za broj bitova navedenih u desnom operandu.
%set A 7 %set result [expr $A << 2] %puts $result
Za operator >> desnog pomaka, vrijednost lijevog operanda pomiče se udesno za broj bitova navedenih u desnom operandu.
%set A 7 %set result [expr $A >> 2] %puts $result
Usporedba nizova Operahumka
Operator usporedbe nizova uspoređuje vrijednost oba operanda. Ako je vrijednost operanda ista, vratit će 1 inače će vratiti 0. U primjeru vrijednost za A i B je 7, stoga rezultat vraća 1.
Primjer: -
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (ako su vrijednosti oba operanda različite tada će vratiti 1 inače vratiti 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Operator stepenovanja
Pow () i ** su oba ista. Uvijek vraća pokretnu vrijednost.
** označava snagu željenog operanda.
Primjer: -
%set A 7 %set result [expr $A ** 2] %puts $result 49
Popis Operahumka
Ako je tražena vrijednost pronađena na definiranom popisu, vraća 1 inače vraća 0. U primjeru vrijednost 1 postoji u varijabli 'a' stoga će vratiti 1.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
ni, ako je tražena vrijednost pronađena na definiranom popisu, vratit će 0 inače vratiti 1.
Primjer: -
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
TCL kontrola toka i donošenje odluka
Postoje razne naredbe za kontrolu toka i donošenje odluka koje se koriste za promjenu tijeka programa. Izvršavanje programa uvijek počinje od vrha izvorne datoteke prema dnu.
If iskaz se sastoji od Booleovog izraza nakon kojeg slijedi jedan ili više iskaza.
Ako ... izjava
Sintaksa:-
if expr ?onda? tijelo
ako se izraz procijeni na istinito, tada se tijelo naredbe izvršava.
Primjer: -
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
If ... else izjava
Sintaksa: -
Ako izraz ? zatim tijelo_1 drugo tijelo_2
Ako je izraz procijenjen kao istinit, tada će vratiti body_1 inače će vratiti body_2
Primjer:--
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
Ugniježđena izjava if..else
To znači da se jedna naredba if ili else..if može staviti unutar druge naredbe if ili else..if.
Sintaksa:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Primjer:--
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
Izjava o prebacivanju
Naredba switch omogućuje testiranje jednakosti varijable u odnosu na popis vrijednosti. Procjenjuje popis vrijednosti i vraća rezultat te procjene. Ako nijedna vrijednost ne odgovara, bit će vraćene zadane vrijednosti.
Primjer:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
Ugniježđeni prekidač
Ugniježđena naredba switch znači naredbu switch unutar naredbe switch.
Sintaksa :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
Primjer: U sljedećem primjeru vrijednost a je 100, a s istim kodom mijenjamo naredbu za drugu vrijednost b 200. Izlaz će pokazati vrijednost i za a i za 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" } } } }
Izlaz:-
Vrijednost a je 100
Vrijednost b je 200
Izjava TCL petlje
Naredba petlje omogućuje izvršavanje naredbe ili grupe naredbi više puta. Tcl pruža sljedeće vrste naredbi petlje.
Dok zapovijeda
Kada je zadani uvjet istinit, tada se izjava ili grupa izjava ponavlja koje se nalaze u tijelu petlje.
Sintaksa:
While {condition} { Statements }
Primjer: -
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Izlaz:-
a je 10
a je 11
U gornjem primjeru koristi se ugrađena naredba "incr". To znači da će se vrijednost 'a' povećati za 1 do maksimalne vrijednosti (<12).
Za naredbu
Izvršava niz naredbi više puta na temelju vrijednosti brojača. Automatski se povećava ili smanjuje tijekom svakog ponavljanja petlje.
Sintaksa :-
For {start} {test} {next} { Body }
Primjer: U donjem primjeru vrijednost 'i' postavljena je na 0 i povećava se do vrijednosti <5.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Izlaz:-
0 1 2 3 4
Sažetak:
- TCL je skriptni jezik temeljen na nizovima i proceduralni jezik
- Jezik se obično koristi za GUI i testiranje
- U TCL-u prema zadanim postavkama sve je string
- TCL je shell aplikacija koja čita TCL naredbu sa svog standardnog ulaza ili iz datoteke i daje željene rezultate.
- TCL program treba imati ekstenziju .tcl