TCL TK-veiledning: Verktøykommandospråk
Hva er TCL?
TCL er et skallprogram som leser TCL-kommandoen fra standardinndata eller fra en fil og gir ønskede resultater.
TCL er strengbasert skriptspråk og også et prosedyrespråk. Det ble først opprettet av John Osterhout i 1989. Formålet med å utvikle dette språket er enkle innebygde inti ( )-applikasjoner. Språket brukes ofte til GUIer og testing. For eksempel rask prototyping, Testing databaseinteraksjon osv. I TCL er alt som standard en streng.
I denne opplæringen vil du lære-
- Hva er TCL
- Hvordan utføre TCL
- TCL-skript
- TCL-erstatningstype
- TCL-variabel
- TCL-uttrykk og Operator
- TCL flytkontroll og beslutningstaking
Hvordan utføre TCL
Det er to måter å utføre TCL-kode på
- Windows basert applikasjon er tilgjengelig her tcltutor exe-fil
- Linux-basert applikasjon
In Linux interaktiv tolk, kan vi kjøre TCL-skriptene som nedenfor
For å få tilgang til TCL interaktiv sesjon, utfør følgende kommando
TCL-skript
TCL-programmet bør ha en .tcl-utvidelse. Hvert skript i UNIX/LINUX starter med TCL-skallbanen
#!/usr/bin/tclsh
Eksempel:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Produksjon: Hei Verden
I TCL brukes "Puts"-kommandoen til å skrive ut meldinger til konsollen. Syntax of puts er under
setter?-nonewline? ?kanal-ID? streng
- Ingen ny linje: Denne valgfrie parameteren undertrykker nylinjetegnet som standardkommando. Den setter en ny linje til hver streng
- Channelid: Denne parameteren brukes for standard inngangskanal (stdin) og standard utgangskanal (stdout).
Eks:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
TCL-erstatningstype
Det er tre typer erstatninger i TCL
- Kommandoerstatning
- Variabel substitusjon
- Bytte med skråstrek
La oss studere en etter en
Kommandoerstatning
Firkantede parenteser brukes for kommandoerstatning.
Eksempel:-
% puts [expr 1*3] % 3
Her blir kommandoen mellom hakeparentesene evaluert først. Resultatene returneres "uttr" brukt for å utføre den aritmetiske beregningen.
Variabel substitusjon
TCL utfører variabel substitusjon ved hjelp av $ skilt.
Eksempel:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Her lager vi en variabel kalt "a" og setter verdien "10" til den.
- setter en : Den vil skrive ut streng "a", men ikke verdien av 'a' til konsollen
- setter $a : Den vil skrive ut verdien av 'a' til konsollen
La oss utføre og verifisere det. Du vil få utgangen som nedenfor.
$ ./substitution.tcl
a
10
Bytte med skråstrek
I Tcl brukes omvendt skråstrek for å unnslippe spesialtegn samt for å spre lange kommandoer over flere linjer. Ethvert tegn umiddelbart etter omvendt skråstrek vil stå uten erstatning. I eksemplet nedenfor kan du se spesialtegnet " ", forblir etter omvendt skråstrek.
La oss bekrefte dette med et eksempel
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
MERK: -For å kommentere en hvilken som helst streng i TCL brukes "#". Alle tegn etter "#" ignoreres av tclsh shell-kommandoen.
TCL-variabel
En variabel er en identifikator som har en verdi. En variabel er med andre ord en referanse til et datamaskinminne, hvor verdien er lagret.
Variabler lages av "sett kommando" og alle variabelnavn skiller mellom store og små bokstaver. Det betyr hei, hei, hallo alle er forskjellige i TCL. Se på noen eksempler for store og små bokstaver.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Produksjon:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Opprette TCL-variabler
For å lage variabler i TCL må du bruke "sett" kommando
Sett en 10
For å få verdien av variabel må du bruke "$" symbol som
% satte $a
% 10
Så vi får verdien av variabel 'a' som 10.
TCL-kommandoinformasjon finnes
"Set"-kommandoen brukes til å lage og lese variabler som vist ovenfor. Unset-kommandoen brukes til å ødelegge en variabel. Kommandoen "info exists" returnerer 1 hvis varName eksisterer som en variabel (eller et matriseelement) i gjeldende kontekst, ellers returnerer 0. (se eksempel nedenfor).
Det er forskjellige "info"-kommandoer i TCL som "info eksisterer", "infofunksjoner", "info global" og så videre. Her vil vi se et eksempel på "info eksisterer".
Eks:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Ulike tannregulering og deres oppførsel
{} -> Krøllete seler
Krøllete klammeparenteser i TCL grupperer ord sammen for å bli argumenter. Krøllete klammeparenteser brukes til å definere en blokk som er utsatt – med andre ord kan den kjøres ETTER resten av kommandoen på gjeldende linje. Tegn innenfor klammeparenteser sendes til en kommando nøyaktig som skrevet.
Noen punkter å huske
- Variabelsubstitusjon er ikke tillatt innenfor {} klammeparenteser
- Den pleide å lage listedatatype
Eksempel:-
% set x 10 % puts {$x} % $x
%sett nummer {1 2 3 4 5} -> Her er nummeret en listedatatype
% setter $nummer
%1 2 3 4 5
[] -> firkantede klammeparenteser
Firkantede parenteser brukes til å lage nestede kommandoer. Enkelt sagt, utdata fra en kommando ble sendt som argument til en annen kommando. Firkantede parenteser brukes til å definere en blokk som kjøres FØR resten av kommandoen på gjeldende linje, og resultatet erstattes i linjen.
Eks: –
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> runde seler
Denne kommandoen brukes til å lage matrisedatatype og også indikere operatørprioritet.
% set a(1) 10 % set a(2) 20
Her er "a" en matrise med verdi 10 og 20. Se kommandoene nedenfor for å skrive ut nøkler, nøkkelverdipar og verdier for matrise.
% 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
For utskrift av "Nth"-verdi av matrise a, vil vi bruke Puts $a(N)
TCL Kommandolinjeargumenter
Dataelementer som sendes til et skript fra kommandolinjen er kjent som argumenter. Antall kommandolinjeargumenter til et Tcl-skript sendes som den globale variabelen argc . Navnet på et Tcl-skript sendes til skriptet som den globale variabelen argv0 , og resten av kommandolinjeargumentene sendes som en liste i argv.
TCL har 3 forhåndsdefinerte variabler som f.eks
$argc -> indicates the number of arguments passed to the script $argv -> indicates list of arguments $argv0 -> indicates the name of script
Eks:–
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
produksjon:-
- Antall argumenter sendt til skriptene: 3
- Liste over argumenter sendes til skriptet: 10 20 30
- Navnet på skriptet er: arg-script.tcl
TCL-uttrykk og Operator
Uttrykket er konstruert fra operander og operatorer. Det evalueres med kommandoen "expr". Operators blir evaluert basert på forrang og assosiativitet. TCL-språket har innebygde operatører som nedenfor
Operator-kategori | symbol | Forrang/assosiativitet |
---|---|---|
Aritmetisk Operator | + - * / % | Venstre til høyre |
Relasjonelt Operator | == != < > <= >= | Venstre til Høyre |
logisk Operator | && || ! | Venstre til Høyre |
bitvis Operator | & | ^ ~ | Venstre til Høyre |
Ternær Operator | ?: | Høyre til venstre |
Shift Operator | << >> | Venstre til Høyre |
Strengesammenligning Operator | eq ne | Venstre til Høyre |
Potens Operator | ** | Venstre til Høyre |
Liste Operator | I ni | Venstre til Høyre |
Aritmetisk Operator
Et TCL-uttrykk består av en kombinasjon av operander, operatorer og parenteser. La oss se eksempler på aritmetiske operatorer i TCL
+ Legg til to eller flere operander
Eks:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
- Trekker fra to eller flere operander
Eks:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
*Multipiser to eller flere operander
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Del teller med teller
%set a 20 %set b 10 %puts [expr $a / $b] 2
% Modulus-operatør deler teller med teller, men returnerer påminnelse
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relasjonelt Operator
Sjekker om verdien av venstre operand er større enn verdien til høyre operand. Hvis ja, blir betingelsen sann og returner 1 ellers returnerer 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Sjekk om verdien av venstre operand er mindre enn verdien til høyre operand. Hvis ja, blir betingelsen sann og returner 1 ellers returnerer 0
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Sjekker om verdien av venstre operand er større enn eller lik verdien av høyre operand, hvis ja, blir betingelsen sann og returnerer 1 ellers returnerer 0
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Sjekker om verdien av venstre operand er mindre enn eller lik verdien av høyre operand, hvis ja, blir betingelsen sann og returnerer 1 ellers returner 0
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Sjekker om verdiene til to operander er like eller ikke, hvis verdiene ikke er like blir betingelsen sann og returnerer 1 ellers returnerer 0
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Sjekker om verdiene til to operander er like eller ikke, hvis ja, blir betingelsen sann og returnerer 1 ellers returnerer 0
%set a 20 %set b 10 %puts [expr $a == $b] 0
logisk Operator
&& Hvis begge operandene ikke er null, blir betingelsen sann og returnerer 1 ellers returnerer 0
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Hvis noen av de to operandene ikke er null, blir betingelsen sann og returnerer 1 ellers returnerer 0
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Brukes til å reversere resultatet av ethvert uttrykk. Her i utgangen kan du se verdien av 'a' har nå blitt 1 fra 0. Mens verdien av 'b' har blitt 0 fra 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
bitvis Operator
& (bitvis og) utfør bit for bit operasjon og følg tabellen nedenfor for operasjon.
A | B | A & B. |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Eks:-
%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
| (bitvis eller) utfør bit for bit operasjon og følg tabellen nedenfor
A | B | A | B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Eks:-
%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
^ (bitvis eksklusiv eller) utfør bit for bit operasjon og følg tabellen nedenfor
A | B | A ^ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Eks:-
%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
~ (bitvis negasjon) operator endrer hver 1 til 0 og 0 til 1, følg tabellen som referanse
A | ~A |
---|---|
0 | 1 |
1 | 0 |
%set A 7 %puts [expr ~$A] -8
Ternær Operator (?:)
Syntaks er
condition-expression? expression_1: expression_2
Hvis condition-exp er sant, blir exp1 evaluert og resultatet returnert. Hvis cond-exp er falsk, blir exp2 evaluert og resultatet returnert. I vårt eksempel er exp1 sann ettersom verdien av A er større enn 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operator
Shift operatør er betegnet med enten << venstre skift operatør, eller med >> høyre skift operatør. For << venstreskiftoperator flyttes verdien for venstre operander til venstre med antall biter spesifisert av høyre operand.
%set A 7 %set result [expr $A << 2] %puts $result
For operatøren >> høyre skift flyttes verdien for venstre operander til høyre med antall biter spesifisert av høyre operand.
%set A 7 %set result [expr $A >> 2] %puts $result
Strengesammenligning Operator
Operator for strengsammenligning sammenligner verdien av begge operandene. Hvis verdien av operanden er den samme, vil den returnere 1 ellers returnere 0. I eksempelet er verdien for både A og B 7, derfor gir resultatet 1.
Eks:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (hvis verdien av begge operandene er forskjellige, vil den returnere 1 ellers returnere 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Eksponentieringsoperator
Pow () og ** er begge like. Den returnerer alltid flytende verdi.
** indikerer kraften til ønsket operand.
Eks:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Liste Operator
Hvis den påkrevde verdien finnes i den definerte listen, returnerer den 1 ellers returnerer 0. I eksempelet eksisterer verdi 1 i variabel 'a' og vil derfor returnere 1.
set a {1 2 3} if {1 in $a} { puts "ok" } else { puts "fail" } Output: ok
ni, hvis den nødvendige verdien finnes i den definerte listen, vil den returnere 0 ellers returnere 1.
Eks:-
set a {1 2 3} if {1 ni $a} { puts "ok" } else { puts "fail" } Output: fail
TCL flytkontroll og beslutningstaking
Det er forskjellige flytkontroll- og beslutningskommandoer som brukes til å endre flyten til et program. Programkjøring starter alltid fra toppen av kildefilen til bunnen.
If-setning består av boolsk uttrykk etterfulgt av ett eller flere utsagn.
Hvis ... uttalelse
Syntaks:-
hvis expr? da? kropp
hvis expr evalueres til sant, utføres kommandoteksten.
Eks:-
set age 10 if {$age < 20} { puts "Age is less than 20" } Output: Age is less than 20
Hvis ... annet utsagn
Syntaks:-
Hvis uttrykk? deretter body_1 else body_2
Hvis uttrykket evalueres til sant, vil det returnere body_1 ellers returnere body_2
Eks:--
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
Nested if..else-uttalelse
Det betyr en if or else..if-setning kan settes inn i en annen if or else..if-setninger.
Syntaks:-
If {expression_1} { Body_1 If {expression_2} { Body_2 } }
Eks:--
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
Bytt uttalelse
Switch-setningen gjør det mulig å teste en variabel for likhet mot en liste med verdier. Den evaluerer listen over verdier og returnerer resultatet av den evalueringen. Hvis ingen verdier samsvarer, vil standardverdiene bli returnert.
Eksempel:
#!/usr/bin/tclsh # switch_cmd.tcl set domain x switch $domain { x { puts "x" } y { puts "y" } z { puts "z" } default { puts "unknown" } }
Nestet bryter
Nested switch statement betyr switch statement inne i en switch statement.
syntax :-
switch <switchingstring1> { <matchstring1> { body1 switch <switchingstring2> { <matchstring2> { body2 } ... switch <switchingstringN> { <matchStringN> { bodyN } } }
Eksempel: I det følgende eksempelet er verdien av a 100, og med den samme koden bytter vi utsagn for en annen verdi av b er 200. Uten vil vise verdi for både a og 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" } } } }
Produksjon:-
Verdien av a er 100
Verdien av b er 200
TCL Loop-uttalelse
Loop-setning gjør det mulig å utføre en setning eller gruppe med setninger flere ganger. Tcl gir følgende typer looping-setninger.
Mens kommando
Når en gitt betingelse er sann, gjentas et utsagn eller en gruppe av utsagn som er i løkken.
syntax:
While {condition} { Statements }
Eks:-
#!/usr/bin/tclsh Set a 10 While {$a < 12} { Puts "a is $a" incr a }
Produksjon:-
a er 10
a er 11
I eksemplet ovenfor brukes den innebygde kommandoen "incr". Det betyr at verdien av 'a' vil økes med 1 til maksimumsverdien (<12).
For kommando
Den utfører en sekvens av utsagn flere ganger basert på en tellerverdi. Den økes eller reduseres automatisk under hver repetisjon av løkken.
syntax :-
For {start} {test} {next} { Body }
Eksempel: I eksemplet nedenfor er verdien av 'i' satt til 0 og øket til verdien <5.
#!/usr/bin/tclsh for {set i 0} {$i < 5} {incr i} { put $i }
Produksjon:-
0 1 2 3 4
Sammendrag:
- TCL er strengbasert skriptspråk og også et prosedyrespråk
- Språket brukes ofte til GUIer og testing
- I TCL er alt streng
- TCL er et skallprogram som leser TCL-kommandoen fra standardinndata eller fra en fil og gir ønskede resultater.
- TCL-programmet bør ha .tcl-utvidelsen