Tutoriel TCL TK : Langage de commande d'outil
Quโest-ce que TCL ?
TCL est une application shell qui lit la commande TCL ร partir de son entrรฉe standard ou d'un fichier et donne les rรฉsultats souhaitรฉs.
TCL est un langage de script basรฉ sur les chaรฎnes de caractรจres et รฉgalement un langage procรฉdural. Il a รฉtรฉ crรฉรฉ par John Osterhout en 1989. L'objectif du dรฉveloppementping Ce langage facilite le dรฉveloppement d'applications embarquรฉes. Il est couramment utilisรฉ pour les interfaces graphiques et les tests. Par exemple, pour le prototypage rapide.ping, Tests interaction avec la base de donnรฉes, etc. Dans TCL, par dรฉfaut, tout est une chaรฎne.
Dans ce tutoriel, vous apprendrez-
- Qu'est-ce que TCL
- Comment exรฉcuter TCL
- Scripts TCL
- Type de remplacement TCL
- Variable TCL
- Expression TCL et Operator
- Contrรดle de flux TCL et prise de dรฉcision
Comment exรฉcuter TCL
Il existe deux faรงons d'exรฉcuter du code TCL
- Windows l'application basรฉe est disponible ici fichier exe tcltutor
- Application basรฉe sur Linux
In Linux interprรฉteur interactif, nous pouvons exรฉcuter les scripts TCL comme ci-dessous
Pour accรฉder ร la session interactive TCL, exรฉcutez la commande suivante

Scripts TCL
Le programme TCL doit avoir une extension .tcl. Chaque script sous UNIX/LINUX commence par le chemin du shell TCL
#!/usr/bin/tclsh
Exemple:-
#!/usr/bin/tclsh Puts "Hello World" Script execution:- $ chmod +x helloworld.tcl $ ./helloworld.tcl
Sortie: Bonjour le monde
Dans TCL, la commande ยซ Puts ยป est utilisรฉe pour imprimer des messages sur la console. La syntaxe des puts est ci-dessous
met ?-pas de nouvelle ligne ? ?Identifiant de la chaine? chaรฎne
- Pas de nouvelle ligne: Ce paramรจtre facultatif supprime le caractรจre de nouvelle ligne par la commande par dรฉfaut. Il met une nouvelle ligne ร chaque chaรฎne
- Identifiant de la chaine: Ce paramรจtre est utilisรฉ pour le canal d'entrรฉe standard (stdin) et le canal de sortie standard (stdout).
Ex:-
%puts "Hello World" % Hello World %puts stdout "Hello World" % Hello World
Type de remplacement TCL
Il existe trois types de substitutions dans TCL
- Substitution de commandes
- Substitution de variables
- Substitution de barre oblique inverse
รtudions un par un
Substitution de commandes
Les crochets sont utilisรฉs pour la substitution de commandes.
Exemple:-
% puts [expr 1*3] % 3
Ici, la commande entre crochets est รฉvaluรฉe en premier. Les rรฉsultats sont renvoyรฉs ..โexprโ utilisรฉ pour effectuer le calcul arithmรฉtique.
Substitution de variables
TCL effectue une substitution de variable ร l'aide de $ signe.
Exemple:-
#!/usr/bin/tclsh set a 10 puts a puts $a
Ici, nous crรฉons une variable appelรฉe ยซ a ยป et lui donnons la valeur ยซ 10 ยป.
- met a : il affichera la chaรฎne "a" mais pas la valeur de "a" sur la console
- met $a : il imprimera la valeur de 'a' sur la console
Exรฉcutons-le et vรฉrifions-le. Vous obtiendrez le rรฉsultat comme ci-dessous.
$ ./substitution.tcl
a
10
Substitution de barre oblique inverse
En Tcl, la barre oblique inverse est utilisรฉe pour l'รฉchappement.ping Les caractรจres spรฉciaux, ainsi que la possibilitรฉ d'รฉtaler les commandes longues sur plusieurs lignes, sont pris en compte. Tout caractรจre suivant immรฉdiatement la barre oblique inverse est conservรฉ sans modification. Dans l'exemple ci-dessous, le caractรจre spรฉcial ยซ ยป, ยซ ยป, reste inchangรฉ aprรจs la barre oblique inverse.
Vรฉrifions cela avec un exemple
#!/usr/bin/tclsh puts "This is my \"car\" $ ./backslashsubstitution.tcl This is my "car"
REMARQUE: -Pour commenter n'importe quelle chaรฎne dans TCL, ยซ # ยป est utilisรฉ. Tous les caractรจres aprรจs le ยซ # ยป sont ignorรฉs par la commande shell tclsh.
Variable TCL
Une variable est un identifiant qui contient une valeur. En dโautres termes, une variable est une rรฉfรฉrence ร une mรฉmoire dโordinateur, oรน la valeur est stockรฉe.
Les variables sont crรฉรฉes par ยซ commande set ยป et tous les noms de variables sont sensibles ร la casse. Cela signifie bonjour, bonjour, BONJOUR, tous sont diffรฉrents en TCL. Regardez un exemple de variable sensible ร la casse.
% set name Techoit % set Name Technoit_1 % set NAME Technoit_2
Production:-
% puts $name % Technoit %puts $Name %Technoit_1 %puts $NAME %Technoit_2
Crรฉation de variables TCL
Pour crรฉer des variables dans TCL, vous devez utiliser "ensemble" commander
lot de 10
Pour obtenir la valeur de la variable, il faut utiliser le symbole ยซ $ ยป comme
% a mis $a
10%
Nous obtenons donc la valeur de la variable ยซ a ยป รฉgale ร 10.
Les informations sur la commande TCL existent
La commande ยซ set ยป est utilisรฉe pour crรฉer et lire des variables comme indiquรฉ ci-dessus. La commande unset est utilisรฉe pour dรฉtruire une variable. La commande ยซ info existe ยป renvoie 1 si varName existe en tant que variable (ou รฉlรฉment de tableau) dans le contexte actuel, sinon renvoie 0. (voir exemple ci-dessous).
Il existe diverses commandes ยซ info ยป dans TCL telles que ยซ info existe ยป, ยซ fonctions d'information ยป, ยซ info globale ยป, etc. Nous verrons ici un exemple de ยซ l'information existe ยป.
Ex:-
% set a 20 % puts $a % 20 % puts [info exists a] % 1 % unset a %puts [info exists a] % 0
Diffรฉrents appareils orthodontiques et leur comportement
{} -> Accolades
Les accolades en TCL regroupent les mots pour devenir des arguments. Les accolades sont utilisรฉes pour dรฉfinir un bloc diffรฉrรฉ โ en d'autres termes, il peut รชtre exรฉcutรฉ APRรS le reste de la commande sur la ligne actuelle. Les caractรจres entre accolades sont transmis ร une commande exactement tels quโils sont รฉcrits.
Quelques points ร retenir
- La substitution de variable n'est pas autorisรฉe entre {} accolades
- Il est utilisรฉ pour crรฉer un type de donnรฉes de liste
Exemple:-
% set x 10
% puts {$x}
% $x
%set number {1 2 3 4 5} -> Ici, le nombre est un type de donnรฉes de liste
%met un nombre $
%1 2 3 4 5
[] -> accolades
Les crochets sont utilisรฉs pour crรฉer une commande imbriquรฉe. En termes simples, sortie d'une commande passรฉe en argument ร une autre commande. Les crochets sont utilisรฉs pour dรฉfinir un bloc qui est exรฉcutรฉ AVANT le reste de la commande sur la ligne actuelle, et le rรฉsultat est substituรฉ dans la ligne.
Ex: -
% set x 10 % puts "y : [set y [set x 10]]" %y : 10 % puts "x : $x" %x : 10
() -> accolades rondes
Cette commande est utilisรฉe pour crรฉer un type de donnรฉes tableau et รฉgalement indiquer la prioritรฉ des opรฉrateurs.
% set a(1) 10 % set a(2) 20
Ici, ยซ a ยป est un tableau avec les valeurs 10 et 20. Voir ci-dessous les commandes pour imprimer les clรฉs, les paires clรฉ-valeur et les valeurs du tableau.
% 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
Pour imprimer la ยซ Niรจme ยป valeur du tableau a, nous utiliserons Puts $a(N)
Arguments de ligne de commande TCL
Les รฉlรฉments de donnรฉes transmis ร un script ร partir de la ligne de commande sont appelรฉs arguments. Le nombre d'arguments de ligne de commande d'un script Tcl est transmis en tant que variable globale argc . Le nom d'un script Tcl est transmis au script en tant que variable globale argv0 , et le reste des arguments de ligne de commande sont passรฉs sous forme de liste dans argv.
TCL a 3 variables prรฉdรฉfinies telles que
$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< 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
sortie:-
- Nombre d'arguments passรฉs aux scripts : 3
- La liste des arguments est transmise au script : 10 20 30
- Le nom du script est : arg-script.tcl
Expression TCL et Operator
L'expression est construite ร partir d'opรฉrandes et d'opรฉrateurs. Elle est รฉvaluรฉe avec la commande "expr". OperaLes opรฉrateurs sont รฉvaluรฉs en fonction de la prioritรฉ et de l'associativitรฉ. Le langage TCL possรจde des opรฉrateurs intรฉgrรฉs comme ci-dessous
| OperaCatรฉgorie | Symbole | Prioritรฉ/Associativitรฉ |
|---|---|---|
| Arithmรฉtique Operator | + - * / % | De gauche ร droite |
| Relationnel Operator | == != < > <= >= | De gauche ร droite |
| logique Operator | && || ! | De gauche ร droite |
| Bitwise Operator | & | ^ ~ | De gauche ร droite |
| Ternaire Operator | ?: | De droite ร gauche |
| Shift Operator | << >> | De gauche ร droite |
| Comparaison de chaรฎnes Operator | รฉquivalence | De gauche ร droite |
| Exponentiation Operator | ** | De gauche ร droite |
| Liste Operator | En ni | De gauche ร droite |
Arithmรฉtique Operator
Une expression TCL consiste en une combinaison d'opรฉrandes, d'opรฉrateurs et de parenthรจses. Voyons un exemple d'opรฉrateurs arithmรฉtiques dans TCL
+ Ajouter deux ou plusieurs opรฉrandes
Ex:-
%set a 10 %set b 20 %puts [expr $a + $b] 30
- Soustracdeux opรฉrandes ou plus
Ex:-
%set a 20 %set b 10 %puts [expr $a - $b] 10
*Multiplier deux opรฉrandes ou plus
%set a 20 %set b 10 %puts [expr $a * $b] 200
/ Diviser le numรฉrateur par le dรฉnumรฉrateur
%set a 20 %set b 10 %puts [expr $a / $b] 2
L'opรฉrateur % Module divise le numรฉrateur par le dรฉnumรฉrateur mais renvoie un rappel
%set a 20 %set b 10 %puts [expr $a % $b] 0
Relationnel Operator
Vรฉrifie si la valeur de l'opรฉrande gauche est supรฉrieure ร la valeur de l'opรฉrande droit. Si oui, alors la condition devient vraie et renvoie 1, sinon renvoie 0.
%set a 20 %set b 10 %puts [expr $a > $b] 1
Vรฉrifiez si la valeur de lโopรฉrande gauche est infรฉrieure ร la valeur de lโopรฉrande droit. Si oui, alors la condition devient vraie et renvoie 1, sinon renvoie 0
%set a 10 %set b 20 %puts [expr $a < $b] 1
>= Vรฉrifie si la valeur de l'opรฉrande gauche est supรฉrieure ou รฉgale ร la valeur de l'opรฉrande droit, si oui alors la condition devient vraie et renvoie 1 sinon renvoie 0
%set a 20 %set b 10 %puts [expr $a >= $b] 1
<= Vรฉrifie si la valeur de l'opรฉrande gauche est infรฉrieure ou รฉgale ร la valeur de l'opรฉrande droit, si oui alors la condition devient vraie et renvoie 1 sinon renvoie 0
%set a 20 %set b 10 %puts [expr $a <= $b] 0
!= Vรฉrifie si les valeurs de deux opรฉrandes sont รฉgales ou non, si les valeurs ne sont pas รฉgales alors la condition devient vraie et renvoie 1 sinon renvoie 0
%set a 20 %set b 10 %puts [expr $a != $b] 1
== Vรฉrifie si les valeurs de deux opรฉrandes sont รฉgales ou non, si oui alors la condition devient vraie et renvoie 1 sinon renvoie 0
%set a 20 %set b 10 %puts [expr $a == $b] 0
logique Operator
&& Si les deux opรฉrandes sont diffรฉrents de zรฉro, alors la condition devient vraie et renvoie 1, sinon renvoie 0
%set a 20 %set b 10 %puts [expr $a && $b] 1
|| Si l'un des deux opรฉrandes est diffรฉrent de zรฉro, alors la condition devient vraie et renvoie 1, sinon renvoie 0.
%set a 0 %set b 10 %puts [expr $a || $b] 1
! Utilisรฉ pour inverser le rรฉsultat de nโimporte quelle expression. Ici, dans la sortie, vous pouvez voir que la valeur de ยซ a ยป est maintenant passรฉe de 1 ร 0. Alors que la valeur de ยซ b ยป est passรฉe de 0 ร 1.
%set a 0 %set b 1 %puts [expr !$a] 1 %puts [expr !$b] 0
Bitwise Operator
& (bit ร bit et) effectuez une opรฉration bit par bit et suivez le tableau ci-dessous pour le fonctionnement.
| A | B | A & B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
| 1 | 0 | 0 |
Ex:-
%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
| (bit ร bit ou) effectuez une opรฉration bit par bit et suivez le tableau ci-dessous
| A | B | Un | B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 1 |
| 1 | 0 | 1 |
Ex:-
%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
^ (exclusif au niveau du bit ou) effectuez une opรฉration bit par bit et suivez le tableau ci-dessous
| A | B | UNE ^ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
| 1 | 0 | 1 |
Ex:-
%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
L'opรฉrateur ~ (nรฉgation au niveau du bit) change chacun de 1 ร 0 et de 0 ร 1, suivez le tableau comme rรฉfรฉrence
| A | ~A |
|---|---|
| 0 | 1 |
| 1 | 0 |
%set A 7 %puts [expr ~$A] -8
Ternaire Operator (?:)
La syntaxe est
condition-expression? expression_1: expression_2
Si condition-exp est vraie, exp1 est รฉvaluรฉe et le rรฉsultat est renvoyรฉ. Si cond-exp est faux, exp2 est รฉvaluรฉ et son rรฉsultat est renvoyรฉ. Dans notre exemple, exp1 est vraie car la valeur de A est supรฉrieure ร 6.
%set A 7 %set result [expr $A > 6 ? true : false] %puts $result true
Shift Operator
Shift L'opรฉrateur est indiquรฉ soit par l'opรฉrateur de dรฉcalage ร gauche <<, soit par l'opรฉrateur de dรฉcalage ร droite >>. Pour l'opรฉrateur de dรฉcalage ร gauche <<, la valeur de l'opรฉrande gauche est dรฉplacรฉe vers la gauche du nombre de bits spรฉcifiรฉ par l'opรฉrande droit.
%set A 7 %set result [expr $A << 2] %puts $result
Pour l'opรฉrateur de dรฉcalage vers la droite >>, la valeur de l'opรฉrande de gauche est dรฉplacรฉe vers la droite du nombre de bits spรฉcifiรฉ par l'opรฉrande de droite.
%set A 7 %set result [expr $A >> 2] %puts $result
Comparaison de chaรฎnes Operator
L'opรฉrateur de comparaison de chaรฎnes compare la valeur des deux opรฉrandes. Si la valeur de l'opรฉrande est la mรชme, alors il renverra 1, sinon 0. Dans l'exemple, la valeur pour A et B est 7, donc le rรฉsultat renvoie 1.
Ex:-
%set A 7 %set B 7 %set result [expr $A eq $B] %puts $result 1
Ne (si les valeurs des deux opรฉrandes sont diffรฉrentes, il renverra 1, sinon 0)
%set A 7 %set B 8 %set result [expr $A ne $B] %puts $result 1
Opรฉrateur d'exponentiation
Pow () et ** sont tous deux identiques. Il renvoie toujours une valeur flottante.
** indique la puissance de l'opรฉrande souhaitรฉ.
Ex:-
%set A 7 %set result [expr $A ** 2] %puts $result 49
Liste Operator
Si la valeur requise est trouvรฉe dans la liste dรฉfinie, elle renvoie 1, sinon elle renvoie 0. Dans l'exemple, la valeur 1 existe dans la variable ยซ a ยป, elle renverra donc 1.
set a {1 2 3}
if {1 in $a} {
puts "ok"
} else {
puts "fail"
}
Output: ok
ni, si la valeur requise est trouvรฉe dans la liste dรฉfinie, elle renverra 0, sinon elle renverra 1.
Ex :-
set a {1 2 3}
if {1 ni $a} {
puts "ok"
} else {
puts "fail"
}
Output: fail
Contrรดle de flux TCL et prise de dรฉcision
Il existe diverses commandes de contrรดle de flux et de prise de dรฉcision qui sont utilisรฉes pour modifier le flux d'un programme. Les exรฉcutions du programme commencent toujours du haut du fichier source vers le bas.
L'instruction If consiste en une expression boolรฉenne suivie d'une ou plusieurs instructions.
Si... dรฉclaration
Syntaxe:-
si expr ?alors ? corps
si expr est รฉvaluรฉ ร vrai, alors le corps de la commande est exรฉcutรฉ.
Ex:-
set age 10
if {$age < 20} {
puts "Age is less than 20"
}
Output: Age is less than 20
Si ... sinon dรฉclaration
Syntaxe :-
Si expression ? puis body_1 sinon body_2
Si l'expression est รฉvaluรฉe ร vrai, elle renverra body_1 sinon elle renverra body_2
Ex:--
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
Instruction if..else imbriquรฉe
Cela signifie qu'une instruction if ou else..if peut รชtre placรฉe dans une autre instruction if ou else..if.
Syntaxe:-
If {expression_1} {
Body_1
If {expression_2} {
Body_2
}
}
Ex:--
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
Instruction de commutation
L'instruction switch permet de tester l'รฉgalitรฉ d'une variable par rapport ร une liste de valeurs. Il รฉvalue la liste de valeurs et renvoie le rรฉsultat de cette รฉvaluation. Si aucune valeur ne correspond, les valeurs par dรฉfaut seront renvoyรฉes.
Exemple:
#!/usr/bin/tclsh
# switch_cmd.tcl
set domain x
switch $domain {
x { puts "x" }
y { puts "y" }
z { puts "z" }
default { puts "unknown" }
}
Interrupteur imbriquรฉ
L'instruction switch imbriquรฉe signifie l'instruction switch ร l'intรฉrieur d'une instruction switch.
Syntaxe :-
switch <switchingstring1> {
<matchstring1> {
body1
switch <switchingstring2> {
<matchstring2> {
body2
}
...
switch <switchingstringN> {
<matchStringN> {
bodyN
}
}
}
Exemple: Dans l'exemple suivant, la valeur de a est 100, et avec le mรชme code, nous changeons d'instruction pour une autre valeur de b est 200. La sortie affichera la valeur pour a et 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"
}
}
}
}
Production:-
La valeur de a est 100
La valeur de b est 200
Instruction de boucle TCL
L'instruction de boucle permet d'exรฉcuter une instruction ou un groupe d'instructions plusieurs fois. Tcl propose les types de boucles suivants.ping dรฉclaration.
Pendant que la commande
Lorsqu'une condition donnรฉe est vraie, une instruction ou un groupe d'instructions se rรฉpรจte et se trouve dans le corps de la boucle.
Syntaxe:
While {condition} {
Statements
}
Ex :-
#!/usr/bin/tclsh
Set a 10
While {$a < 12} {
Puts "a is $a"
incr a
}
Production:-
a vaut 10
a vaut 11
Dans l'exemple ci-dessus, la commande intรฉgrรฉe "incr" est utilisรฉe. Cela signifie que la valeur de ยซ a ยป sera augmentรฉe de 1 jusqu'ร la valeur maximale (<12).
Pour la commande
Il exรฉcute une sรฉquence d'instructions plusieurs fois en fonction d'une valeur de compteur. Il est automatiquement augmentรฉ ou diminuรฉ ร chaque rรฉpรฉtition de la boucle.
Syntaxe :-
For {start} {test} {next} {
Body
}
Exemple: Dans l'exemple ci-dessous, la valeur de ยซ i ยป est dรฉfinie sur 0 et incrรฉmentรฉe jusqu'ร la valeur <5.
#!/usr/bin/tclsh
for {set i 0} {$i < 5} {incr i} {
put $i
}
Production:-
0 1 2 3 4
Rรฉsumรฉโฏ:
- TCL est un langage de script basรฉ sur des chaรฎnes et รฉgalement un langage procรฉdural
- Le langage est couramment utilisรฉ pour les interfaces graphiques et les tests
- Dans TCL, par dรฉfaut, tout est une chaรฎne
- TCL est une application shell qui lit la commande TCL ร partir de son entrรฉe standard ou d'un fichier et donne les rรฉsultats souhaitรฉs.
- Le programme TCL devrait avoir l'extension .tcl
