Vad är TCL?
TCL är skalprogram som läser TCL-kommandot från sin standardinmatning eller från en fil och ger önskade resultat.
TCL är strängbaserat skriptspråk och även ett procedurspråk. Det skapades först av John Osterhout 1989. Syftet med att utveckla detta språk är lätt inbäddade inti () applikationer. Språket används ofta för GUIs och testning. Till exempel snabb prototypning, Testdatabasinteraktion etc., I TCL som standard är allt en sträng.,
hur man utför TCL
det finns två sätt att köra TCL-kod
- Windows-baserad applikation finns här tcltutor exe-fil
- Linux-baserad applikation
i Linux-baserade program nteraktiv tolk, kan vi köra tcl-skript enligt nedan
för att komma åt tcl interaktiv session, kör följande kommando
tcl-skript
TCL-programmet ska ha en .,TCL förlängning. Varje skript i UNIX / LINUX börjar med TCL shell path
#!/usr/bin/tclsh
exempel: –
#!/usr/bin/tclshPuts "Hello World"Script execution:-$ chmod +x helloworld.tcl$ ./helloworld.tcl
Output: Hello World
i Tcl används kommandot ”Puts” för att skriva ut meddelanden till konsolen .syntax av puts är under
sätter?-nonewline? ?channelId? string
- Nonewline: den här valfria parametern undertrycker det nya tecknet som standardkommando. Det sätter en ny linje till varje sträng
- Channelid: denna parameter används för standard input channel (stdin) och standard output channel (stdout).,
Ex:-
%puts "Hello World"% Hello World%puts stdout "Hello World"% Hello World
Tcl Substitutionstyp
det finns tre typer av substitutioner i TCL
- Command substitution
- variabel substitution
- Backslash substitution
låt oss studera en efter en
Command substitution
hakparenteser används för kommandobyte.
exempel: –
% puts % 3
här utvärderas kommandot mellan hakparenteserna först. Resultaten returneras .”expr” används för att utföra den aritmetiska beräkningen.,
variabel substitution
TCL utför variabel substitution med hjälp av $ sign.
exempel: –
#!/usr/bin/tclshset a 10puts aputs $a
här skapar vi en variabel som heter ”A” och anger värdet ”10” till det.
- sätter ett: det kommer att skriva ut strängen” A ”men inte värdet av” A ”till konsolen
- sätter $a: det kommer att skriva ut värdet av” a ” till konsolen
låt oss utföra och verifiera det. Du kommer att få utdata enligt nedan.,
$ ./substitution.tcl
a
Backslash substitution
i Tcl används backslashen för att undkomma specialtecken samt för att sprida långa kommandon över flera rader. Varje tecken som omedelbart följer backslash kommer att stå utan substitution. I exemplet nedan kan du se specialtecken ” ”, förblir efter bakslaget.
låt oss verifiera detta med ett exempel
#!/usr/bin/tclshputs "This is my \"car\"$ ./backslashsubstitution.tclThis is my "car"
OBS: -För att kommentera någon sträng i tcl ”#” används. Alla tecken efter ” # ” ignoreras av tclsh shell-kommandot.,
Tcl-variabel
en variabel är en identifierare som har ett värde. Med andra ord är en variabel en referens till ett datorminne, där värdet lagras.
variabler skapas av ”set command” och alla variabelnamn är skiftlägeskänsliga. Det betyder hej, hej, hej alla är olika i TCL. Titta på något exempel för skiftlägeskänslig variabel.,
% set name Techoit% set Name Technoit_1% set NAME Technoit_2
Output: –
% puts $name% Technoit%puts $Name%Technoit_1%puts $NAME%Technoit_2
skapa Tcl-variabler
för att skapa variabler i TCL måste du använda kommandot ”set”
Ställ in en 10
för att få värdet av variabeln måste du använda ” $ ”- symbolen som
för att få värdet av variabeln måste p>
% sätta $a
% 10
så vi får värdet av variabeln ” a ” som 10.
Tcl Command Info finns
kommandot ”set” används för att skapa och läsa variabler som visas ovan. Kommandot unset används för att förstöra en variabel., Kommandot” info finns ” returnerar 1 om varName finns som en variabel (eller ett matriselement) i det aktuella sammanhanget, annars returnerar 0. (se exempel nedan).
Ex: –
% set a 20% puts $a% 20% puts % 1% unset a%puts % 0
olika hängslen och deras beteende
{}- > lockiga hängslen
lockiga hängslen i TCL gruppord tillsammans för att bli argument. Curly braces används för att definiera ett block som är uppskjutet – med andra ord kan det köras efter resten av kommandot på den aktuella raden. Tecken inom hängslen skickas till ett kommando exakt som skrivet.,
vissa punkter att komma ihåg
- variabel substitution är inte tillåtet inuti {} hängslen
- Det används för att skapa listdatatyp
exempel :-
% set x 10% puts {$x}% $x
%set number {1 2 3 4 5} -> här numret är en lista datatyp
%sätter $nummer
%1 2 3 4 5
– > fyrkantiga hängslen
hakparenteser används för att skapa kapslade kommando. Enkelt uttryckt, utmatning av ett kommando passerade som argument till ett annat kommando., Hakparenteser används för att definiera ett block som körs före resten av kommandot på den aktuella raden, och resultatet ersätts i raden.
Ex: –
% set x 10% puts "y : ]"%y : 10% puts "x : $x"%x : 10
()- > runda hängslen
det här kommandot används för att skapa matrisdatatyp och anger också operatörsprecidens.
% set a(1) 10% set a(2) 20
Här ”A” är en array med värde 10 och 20. Se nedan kommandon för att skriva ut nycklar, nyckelvärdespar och värden för array.,
För Skriv ut ”Nth” värdet av array a, kommer vi att använda sätter $a(N)
Tcl kommandoradsargument
dataposter som skickas till ett skript från kommandoraden kallas argument. Antalet kommandoradsargument till ett TCL-skript skickas som den globala variabeln argc . Namnet på ett TCL-skript skickas till skriptet som den globala variabeln argv0, och resten av kommandoradsargumenten skickas som en lista i argv.,
TCL har 3 fördefinierade variabler som
$argc -> indicates the number of arguments passed to the script$argv -> indicates list of arguments$argv0 -> indicates the name of script
Ex:–
arg-script.tcl#!/usr/bin/tclsh$ ./arg-script.tcl 10 20 30output:-
- antal argument som skickas till skripten: 3
- lista över argument skickas till skriptet: 10 20 30
- namnet på skriptet : 10 20 30
- namnet på skriptet: 10 20 är: arg – script.Tcl
Tcl uttryck och operatör
uttryck är konstruerat från operander och operatörer. Det utvärderas med kommandot ”expr”. Operatörerna utvärderas utifrån företräde och associativitet., Tcl language har inbyggda operatörer enligt nedan
aritmetisk operatör
ett TCL-uttryck består av en kombination av operander, operatörer och parenteser., Låt se exempel på aritmetiska operatörer i TCL
+ Lägg till två eller flera operander
Ex:-
%set a 10 %set b 20%puts 30
– subtraherar två eller flera operander
Ex:-
%set a 20 %set b 10%puts 10
*multiplicera två eller flera operander
%set a 20 %set b 10%puts 200
/ Divide täljare av denumerator
%set a 20 %set b 10%puts 2
% modulus operator delar täljare av täljare men returnerar påminnelse
%set a 20 %set b 10%puts 0
relationsoperatör
kontrollerar om värdet på vänster operand är större än värdet på höger operand., Om ja, då villkoret blir sant och returnera 1 else return 0.
%set a 20 %set b 10%puts 1
kontrollera om värdet på vänster operand är mindre än värdet på höger operand., Om ja, då villkoret blir sant och returnera 1 else return 0
%set a 10 %set b 20%puts 1
>= kontrollerar om värdet av vänster operand är större än eller lika med värdet av höger operand, om ja då villkoret blir sant och returnera 1 else return 0
%set a 20 %set b 10%puts 1
<= kontrollerar om värdet på vänster operand är mindre än eller lika med värdet på höger operand, om ja blir villkoret sant och returnera 1 else return 0
%set a 20 %set b 10%puts 0
!,re not equal then condition becomes true and return 1 else return 0
%set a 20 %set b 10%puts 1
= kontrollerar om värdena för två operander är lika eller inte, Om ja då villkoret blir sant och retur 1 else return 0
%set a 20 %set b 10%puts 0
logisk operatör
&& om båda operanderna inte är noll, blir tillståndet sant och returnera 1 else return 0
%set a 20 %set b 10%puts 1
|| om någon av de två operanderna inte är noll, blir tillståndet sant och returnera 1 else return 0
%set a 0 %set b 10%puts 1
!, Används för att vända resultatet av något uttryck. Här i utgången kan du se värdet av ” a ” har nu blivit 1 från 0. Medan värdet av ” b ” har blivit 0 från 1.
%set a 0 %set b 1%puts 1%puts 0
Bitwise Operator
& (bitwise och) utför bit för bit och följ nedanstående tabell för drift.,/td>
Ex:-
%set A 10%set B 20Follow the sequence to convert decimal to binary number128 64 32 16 8 4 2 110 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 0 1 0 1 020 binary equivalents will be 128 64 32 16 8 4 2 1 à 0 0 0 1 0 1 0 0So now as per above tabular rulesA ^ B will be 0 0 0 1 1 1 1 0 à 30
~ (bitwise negation) operator changes each 1 to 0 and 0 to 1, follow the table as reference
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7%puts -8
Ternary Operator ( ?,:)
syntaxen är
condition-expression? expression_1: expression_2
om condition-exp är sant utvärderas exp1 och resultatet returneras. Om cond-exp är falskt utvärderas exp2 och resultatet returneras. I vårt exempel är exp1 sant eftersom värdet av A är större än 6.
%set A 7%set result %puts $resulttrue
Shift Operator
Shift operator betecknas med antingen<< vänster shift operator, eller av>> höger shift operator., För<< vänster Shift-operatör flyttas det vänstra operandvärdet till vänster med det antal bitar som anges av höger operand.
%set A 7%set result %puts $result
för >> höger shift-operatör flyttas det vänstra operandvärdet direkt med det antal bitar som anges av höger operand.
%set A 7%set result %puts $result
String Comparison Operator
String comparison operator jämför värdet för båda operanderna. Om operandens värde är detsamma kommer det att returnera 1 else return 0., I exempelvärde för både A och B är 7, därför resultat avkastning 1.
Ex: –
%set A 7 %set B 7%set result %puts $result1
Ne (om värdet på båda operanderna är olika kommer det att returnera 1 else return 0)
%set A 7 %set B 8%set result %puts $result1
Exponentiationsoperatör
Pow () och ** båda är desamma. Det returnerar alltid flytande värde.
** anger strömmen till önskad operand.
Ex: –
%set A 7%set result %puts $result49
Listoperatör
om det önskade värdet hittades i den definierade listan returnerar den 1 else return 0. I exempelvärde 1 finns i variabeln ”a”, så kommer den att returnera 1.,
set a {1 2 3}if {1 in $a} {puts "ok"} else {puts "fail"}Output: ok
ni, om det önskade värdet hittades i den definierade listan kommer det att returnera 0 else return 1.
Ex: –
set a {1 2 3}if {1 ni $a} {puts "ok"} else {puts "fail"}Output: fail
TCL flödeskontroll och beslutsfattande
det finns olika flödeskontroll och beslutsfattande kommando som används för att ändra flödet av ett program. Programutförande startar alltid från toppen av källfilen till botten.
om Satsen består av booleskt uttryck följt av en eller flera satser.
If … statement
Syntax: –
om expr?då?, body
om expr utvärderas till true, körs kommandotolken.
Ex: –
set age 10if {$age < 20} {puts "Age is less than 20"}Output: Age is less than 20
If … else statement
Syntax: –
If expression? sedan body_1 else body_2
om uttrycket utvärderas till Sant, kommer det att returnera body_1 else det kommer att returnera body_2
Ex:–
set age 10if {$age < 20} {puts "Age is less than 20"} else {Puts "Age is greater than 20"}output: Age is less than 20
kapslade om..else statement
det betyder en if eller annat..om uttalande kan sättas in i en annan om eller annat..om uttalanden.,
Syntax: –
If {expression_1} {Body_1If {expression_2} {Body_2}}
Ex:–
Switch statement
switch statement gör att en variabel kan testas för jämlikhet mot en lista med värden. Den utvärderar listan över värden och returnerar resultatet av den utvärderingen. Om inga värden matchar kommer standardvärdena att returneras.
exempel:
#!/usr/bin/tclsh# switch_cmd.tclset domain xswitch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" }}
kapslade switch
kapslade switch statement betyder switch statement inuti en switch statement.,
Syntax: –
exempel: i följande exempel är värdet av a 100, och med samma kod byter vi uttalande för ett annat värde av B är 200. Out kommer att visa värde för både A och b.
#!/usr/bin/tclshset a 100set b 200switch $a { 100 { puts "The value of a is $a" switch $b { 200 { puts "The value of b is $b" } } } }
Output:
värdet av A är 100
värdet av B är 200
Tcl Loop statement
Loop statement tillåter att utföra ett uttalande eller en grupp av statement flera gånger. Tcl ger följande typer av looping uttalande.,
medan kommandot
När ett givet tillstånd är sant upprepas ett uttalande eller en grupp av uttalande som finns i slingkroppen.
Syntax:
While {condition} { Statements}
Ex: –
#!/usr/bin/tclshSet a 10While {$a < 12} { Puts "a is $a" incr a}
utgång:
A är 10
a är 11
i ovanstående exempel används ”incr” inbyggt kommando. Det betyder att värdet av ” a ” kommer att ökas med 1 till det maximala värdet (<12).
för kommandot
det utför en sekvens av uttalanden flera gånger baserat på ett motvärde., Det ökas automatiskt eller minskas under varje upprepning av slingan.
Syntax: –
For {start} {test} {next} {Body}
exempel: i exemplet nedan är värdet ’i’ inställt på 0 och ökat till-värde <5.
#!/usr/bin/tclshfor {set i 0} {$i < 5} {incr i} {put $i}
utgång: –