TCL TK Tutorial: Tool Command Language

ะฉะพ ั‚ะฐะบะต TCL?

TCL โ€” ั†ะต ะฟั€ะพะณั€ะฐะผะฐ ะพะฑะพะปะพะฝะบะธ, ัะบะฐ ะทั‡ะธั‚ัƒั” ะบะพะผะฐะฝะดัƒ TCL ะทั– ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะณะพ ะฒะฒะพะดัƒ ะฐะฑะพ ะท ั„ะฐะนะปัƒ ั‚ะฐ ะดะฐั” ะฑะฐะถะฐะฝั– ั€ะตะทัƒะปัŒั‚ะฐั‚ะธ.

TCL โ€” ั†ะต ะผะพะฒะฐ ัั†ะตะฝะฐั€ั–ั—ะฒ ะฝะฐ ะพัะฝะพะฒั– ั€ัะดะบั–ะฒ, ะฐ ั‚ะฐะบะพะถ ะฟั€ะพั†ะตะดัƒั€ะฝะฐ ะผะพะฒะฐ. ะ’ะฟะตั€ัˆะต ั—ั— ัั‚ะฒะพั€ะธะฒ ะ”ะถะพะฝ ะžัั‚ะตั€ั…ะฐัƒั‚ ัƒ 1989 ั€ะพั†ั–. ะœะตั‚ะพัŽ ั€ะพะทั€ะพะฑะบะธ ั†ั–ั”ั— ะผะพะฒะธ ั” ะปะตะณะบะต ะฒะฑัƒะดะพะฒะฐะฝะต ะฟั€ะพะณั€ะฐะผะฝะต ะทะฐะฑะตะทะฟะตั‡ะตะฝะฝั inti ( ). ะฆั ะผะพะฒะฐ ะทะฐะทะฒะธั‡ะฐะน ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั GUI ั‚ะฐ ั‚ะตัั‚ัƒะฒะฐะฝะฝั. ะะฐะฟั€ะธะบะปะฐะด, ัˆะฒะธะดะบะต ะฟั€ะพั‚ะพั‚ะธะฟัƒะฒะฐะฝะฝั, ะขะตัั‚ัƒะฒะฐะฝะฝั ะฒะทะฐั”ะผะพะดั–ั ะท ะฑะฐะทะพัŽ ะดะฐะฝะธั… ั‚ะพั‰ะพ. ะฃ TCL ะทะฐ ะทะฐะผะพะฒั‡ัƒะฒะฐะฝะฝัะผ ะฒัะต ั” ั€ัะดะบะพะผ.

ะฃ ั†ัŒะพะผัƒ ะฟั–ะดั€ัƒั‡ะฝะธะบัƒ ะฒะธ ะดั–ะทะฝะฐั”ั‚ะตััŒ-

ะฏะบ ะทะฐะฟัƒัั‚ะธั‚ะธ TCL

ะ†ัะฝัƒั” ะดะฒะฐ ัะฟะพัะพะฑะธ ะฒะธะบะพะฝะฐะฝะฝั ะบะพะดัƒ TCL

  1. Windows ะดะพะดะฐั‚ะพะบ ะฝะฐ ะพัะฝะพะฒั– ะดะพัั‚ัƒะฟะฝะธะน ั‚ัƒั‚ ั„ะฐะนะป tcltutor exe
  2. ะŸั€ะพะณั€ะฐะผะฐ ะฝะฐ ะฑะฐะทั– Linux

In Linux ั–ะฝั‚ะตั€ะฐะบั‚ะธะฒะฝะธะน ั–ะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€, ะผะธ ะผะพะถะตะผะพ ะฒะธะบะพะฝัƒะฒะฐั‚ะธ ัั†ะตะฝะฐั€ั–ั— TCL, ัะบ ะฟะพะบะฐะทะฐะฝะพ ะฝะธะถั‡ะต

ะฉะพะฑ ะพั‚ั€ะธะผะฐั‚ะธ ะดะพัั‚ัƒะฟ ะดะพ ั–ะฝั‚ะตั€ะฐะบั‚ะธะฒะฝะพะณะพ ัะตะฐะฝััƒ TCL, ะฒะธะบะพะฝะฐะนั‚ะต ั‚ะฐะบัƒ ะบะพะผะฐะฝะดัƒ

ะŸั–ะดั€ัƒั‡ะฝะธะบ TCL: ะผะพะฒะฐ ะบะพะผะฐะฝะด ั–ะฝัั‚ั€ัƒะผะตะฝั‚ะฐ

ะกะบั€ะธะฟั‚ะธ TCL

ะŸั€ะพะณั€ะฐะผะฐ TCL ะฟะพะฒะธะฝะฝะฐ ะผะฐั‚ะธ ั€ะพะทัˆะธั€ะตะฝะฝั .tcl. ะšะพะถะตะฝ ัั†ะตะฝะฐั€ั–ะน ะฒ UNIX/LINUX ะฟะพั‡ะธะฝะฐั”ั‚ัŒัั ะทั– ัˆะปัั…ัƒ ะพะฑะพะปะพะฝะบะธ TCL

#!/usr/bin/tclsh

ะŸั€ะธะบะปะฐะด:-

#!/usr/bin/tclsh
Puts "Hello World"
Script execution:-
$ chmod +x helloworld.tcl
$ ./helloworld.tcl

ะ’ะธั…ั–ะด: ะŸั€ะธะฒั–ั‚ ะกะฒั–ั‚

ะฃ TCL ะบะพะผะฐะฝะดะฐ ยซPutsยป ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะดั€ัƒะบัƒ ะฟะพะฒั–ะดะพะผะปะตะฝัŒ ะฝะฐ ะบะพะฝัะพะปัŒ. ะกะธะฝั‚ะฐะบัะธั puts ะฝะฐะฒะตะดะตะฝะพ ะฝะธะถั‡ะต

ัั‚ะฐะฒะธั‚ัŒ?-nonewline? ?channelId? ั€ัะดะพะบ

  • ะ‘ะตะท ะฝะพะฒะพะณะพ ั€ัะดะบะฐ: ะฆะตะน ะดะพะดะฐั‚ะบะพะฒะธะน ะฟะฐั€ะฐะผะตั‚ั€ ะฟั€ะธะณะฝั–ั‡ัƒั” ัะธะผะฒะพะป ะฝะพะฒะพะณะพ ั€ัะดะบะฐ ะทะฐ ะทะฐะผะพะฒั‡ัƒะฒะฐะฝะฝัะผ. ะ’ั–ะฝ ัั‚ะฐะฒะธั‚ัŒ ะฝะพะฒะธะน ั€ัะดะพะบ ะดะพ ะบะพะถะฝะพะณะพ ั€ัะดะบะฐ
  • Channelid: ะฆะตะน ะฟะฐั€ะฐะผะตั‚ั€ ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะณะพ ะฒั…ั–ะดะฝะพะณะพ ะบะฐะฝะฐะปัƒ (stdin) ั– ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะณะพ ะฒะธั…ั–ะดะฝะพะณะพ ะบะฐะฝะฐะปัƒ (stdout).

ะะฐะฟั€ะธะบะปะฐะด:-

%puts "Hello World"
% Hello World
%puts stdout  "Hello World"
% Hello World

ะขะธะฟ ะทะฐะผั–ะฝะธ TCL

ะฃ TCL ั” ั‚ั€ะธ ะฒะธะดะธ ะทะฐะผั–ะฝ

  1. ะ—ะฐะผั–ะฝะฐ ะบะพะผะฐะฝะด
  2. ะ—ะฐะผั–ะฝะฐ ะทะผั–ะฝะฝะพั—
  3. ะ—ะฐะผั–ะฝะฐ ะทะฒะพั€ะพั‚ะฝะพั— ะบะพัะพั— ั€ะธัะบะธ

ะ”ะฐะฒะฐะนั‚ะต ะฒะธะฒั‡ะฐั‚ะธ ะฟะพ ะพะดะฝะพะผัƒ

ะ—ะฐะผั–ะฝะฐ ะบะพะผะฐะฝะด

ะšะฒะฐะดั€ะฐั‚ะฝั– ะดัƒะถะบะธ ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‚ัŒัั ะดะปั ะฟั–ะดัั‚ะฐะฝะพะฒะบะธ ะบะพะผะฐะฝะด.

ะŸั€ะธะบะปะฐะด:-

% puts [expr 1*3]
% 3

ะขัƒั‚ ัะฟะพั‡ะฐั‚ะบัƒ ะพะฑั‡ะธัะปัŽั”ั‚ัŒัั ะบะพะผะฐะฝะดะฐ ะฒ ะบะฒะฐะดั€ะฐั‚ะฝะธั… ะดัƒะถะบะฐั…. ะ ะตะทัƒะปัŒั‚ะฐั‚ะธ ะฟะพะฒะตั€ั‚ะฐัŽั‚ัŒ .โ€ะฒะธั€ะฐะทโ€, ัะบะธะน ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะฒะธะบะพะฝะฐะฝะฝั ะฐั€ะธั„ะผะตั‚ะธั‡ะฝะพะณะพ ะพะฑั‡ะธัะปะตะฝะฝั.

ะ—ะฐะผั–ะฝะฐ ะทะผั–ะฝะฝะพั—

TCL ะฒะธะบะพะฝัƒั” ะฟั–ะดัั‚ะฐะฝะพะฒะบัƒ ะทะผั–ะฝะฝะธั… ะทะฐ ะดะพะฟะพะผะพะณะพัŽ $ ะทะฝะฐะบ.

ะŸั€ะธะบะปะฐะด:-

#!/usr/bin/tclsh
set  a  10
puts  a
puts  $a 

ะขัƒั‚ ะผะธ ัั‚ะฒะพั€ัŽั”ะผะพ ะทะผั–ะฝะฝัƒ ะฟั–ะด ะฝะฐะทะฒะพัŽ ยซaยป ั– ะฒัั‚ะฐะฝะพะฒะปัŽั”ะผะพ ั—ะน ะทะฝะฐั‡ะตะฝะฝั ยซ10ยป.

  • puts a : ะฝะฐ ะบะพะฝัะพะปัŒ ะฑัƒะดะต ะฒะธะฒะตะดะตะฝะพ ั€ัะดะพะบ ยซaยป, ะฐะปะต ะฝะต ะทะฝะฐั‡ะตะฝะฝั ยซaยป.
  • puts $a : ะฝะฐ ะบะพะฝัะพะปัŒ ะฑัƒะดะต ะฒะธะฒะตะดะตะฝะพ ะทะฝะฐั‡ะตะฝะฝั 'a'

ะ”ะฐะฒะฐะนั‚ะต ะฒะธะบะพะฝะฐั”ะผะพ ั– ะฟะตั€ะตะฒั–ั€ะธะผะพ ั†ะต. ะ’ะธ ะพั‚ั€ะธะผะฐั”ั‚ะต ั€ะตะทัƒะปัŒั‚ะฐั‚, ัะบ ะฟะพะบะฐะทะฐะฝะพ ะฝะธะถั‡ะต.

$ ./substitution.tcl

a

10

ะ—ะฐะผั–ะฝะฐ ะทะฒะพั€ะพั‚ะฝะพั— ะบะพัะพั— ั€ะธัะบะธ

ะฃ Tcl ะทะฒะพั€ะพั‚ะฝะฐ ะบะพัะฐ ั€ะธัะบะฐ ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะตะบั€ะฐะฝัƒะฒะฐะฝะฝั ัะฟะตั†ั–ะฐะปัŒะฝะธั… ัะธะผะฒะพะปั–ะฒ, ะฐ ั‚ะฐะบะพะถ ะดะปั ั€ะพะทะฟะพะดั–ะปัƒ ะดะพะฒะณะธั… ะบะพะผะฐะฝะด ะผั–ะถ ะบั–ะปัŒะบะพะผะฐ ั€ัะดะบะฐะผะธ. ะ‘ัƒะดัŒ-ัะบะธะน ัะธะผะฒะพะป ะฑะตะทะฟะพัะตั€ะตะดะฝัŒะพ ะฟั–ัะปั ะทะฒะพั€ะพั‚ะฝะพั— ัะบั–ัะฝะพั— ั€ะธัะบะธ ะฑัƒะดะต ัั‚ะพัั‚ะธ ะฑะตะท ะทะฐะผั–ะฝะธ. ะฃ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฝะธะถั‡ะต ะฟั€ะธะบะปะฐะดั– ะฒะธ ะผะพะถะตั‚ะต ะฟะพะฑะฐั‡ะธั‚ะธ ัะฟะตั†ั–ะฐะปัŒะฝะธะน ัะธะผะฒะพะป ยซ ยป, ัะบะธะน ะทะฐะปะธัˆะฐั”ั‚ัŒัั ะฟั–ัะปั ะทะฒะพั€ะพั‚ะฝะพั— ะบะพัะพั— ั€ะธัะบะธ.

ะŸะตั€ะตะบะพะฝะฐั”ะผะพัั ะฒ ั†ัŒะพะผัƒ ะฝะฐ ะฟั€ะธะบะปะฐะดั–

#!/usr/bin/tclsh

puts "This  is my  \"car\"

$ ./backslashsubstitution.tcl
This is my "car"

ะŸะ ะ˜ะœะ†ะขะšะ: -ะ”ะปั ะบะพะผะตะฝั‚ัƒะฒะฐะฝะฝั ะฑัƒะดัŒ-ัะบะพะณะพ ั€ัะดะบะฐ ะฒ TCL ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ยซ#ยป. ะฃัั– ัะธะผะฒะพะปะธ ะฟั–ัะปั ยซ#ยป ั–ะณะฝะพั€ัƒัŽั‚ัŒัั ะบะพะผะฐะฝะดะพัŽ ะพะฑะพะปะพะฝะบะธ tclsh.

ะ—ะผั–ะฝะฝะฐ TCL

ะ—ะผั–ะฝะฝะฐ โ€” ั†ะต ั–ะดะตะฝั‚ะธั„ั–ะบะฐั‚ะพั€, ัะบะธะน ะผั–ัั‚ะธั‚ัŒ ะทะฝะฐั‡ะตะฝะฝั. ะ†ะฝัˆะธะผะธ ัะปะพะฒะฐะผะธ, ะทะผั–ะฝะฝะฐ - ั†ะต ะฟะพัะธะปะฐะฝะฝั ะฝะฐ ะฟะฐะผ'ัั‚ัŒ ะบะพะผะฟ'ัŽั‚ะตั€ะฐ, ะดะต ะทะฑะตั€ั–ะณะฐั”ั‚ัŒัั ะทะฝะฐั‡ะตะฝะฝั.

ะ—ะผั–ะฝะฝั– ัั‚ะฒะพั€ัŽัŽั‚ัŒัั ะบะพะผะฐะฝะดะพัŽ ยซsetยป, ั– ะฒัั– ั–ะผะตะฝะฐ ะทะผั–ะฝะฝะธั… ั‡ัƒั‚ะปะธะฒั– ะดะพ ั€ะตะณั–ัั‚ั€ัƒ. ะฆะต ะพะทะฝะฐั‡ะฐั” ะฟั€ะธะฒั–ั‚, ะฟั€ะธะฒั–ั‚, ะฟั€ะธะฒั–ั‚, ะฒัั– ั€ั–ะทะฝั– ะฒ TCL. ะŸะพะดะธะฒั–ั‚ัŒัั ะฝะฐ ะฟั€ะธะบะปะฐะด ะทะผั–ะฝะฝะพั—, ั‡ัƒั‚ะปะธะฒะพั— โ€‹โ€‹ะดะพ ั€ะตะณั–ัั‚ั€ัƒ.

% set  name  Techoit
% set  Name  Technoit_1
% set  NAME  Technoit_2

ะ’ะธั…ั–ะด:-

% puts $name
% Technoit

%puts  $Name
%Technoit_1

%puts $NAME
%Technoit_2

ะกั‚ะฒะพั€ะตะฝะฝั ะทะผั–ะฝะฝะธั… TCL

ะฉะพะฑ ัั‚ะฒะพั€ะธั‚ะธ ะทะผั–ะฝะฝั– ะฒ TCL, ะฟะพั‚ั€ั–ะฑะฝะพ ะฒะธะบะพั€ะธัั‚ะพะฒัƒะฒะฐั‚ะธ ยซะฝะฐะฑั–ั€ยป ะบะพะผะฐะฝะดะฐ

ะ’ัั‚ะฐะฝะพะฒั–ั‚ัŒ 10

ะฉะพะฑ ะพั‚ั€ะธะผะฐั‚ะธ ะทะฝะฐั‡ะตะฝะฝั ะทะผั–ะฝะฝะพั—, ะฟะพั‚ั€ั–ะฑะฝะพ ะฒะธะบะพั€ะธัั‚ะพะฒัƒะฒะฐั‚ะธ ัะธะผะฒะพะป ยซ$ยป, ะฝะฐะฟั€ะธะบะปะฐะด

% ะฟะพัั‚ะฐะฒะธั‚ะธ $a

% 10

ะžั‚ะถะต, ะผะธ ะพั‚ั€ะธะผัƒั”ะผะพ ะทะฝะฐั‡ะตะฝะฝั ะทะผั–ะฝะฝะพั— 'a' ัะบ 10.

ะ†ะฝั„ะพั€ะผะฐั†ั–ั ะฟั€ะพ ะบะพะผะฐะฝะดัƒ TCL ั–ัะฝัƒั”

ะšะพะผะฐะฝะดะฐ ยซsetยป ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ัั‚ะฒะพั€ะตะฝะฝั ั‚ะฐ ั‡ะธั‚ะฐะฝะฝั ะทะผั–ะฝะฝะธั…, ัะบ ะฟะพะบะฐะทะฐะฝะพ ะฒะธั‰ะต. ะšะพะผะฐะฝะดะฐ unset ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะทะฝะธั‰ะตะฝะฝั ะทะผั–ะฝะฝะพั—. ะšะพะผะฐะฝะดะฐ ยซinfo existsยป ะฟะพะฒะตั€ั‚ะฐั” 1, ัะบั‰ะพ varName ั–ัะฝัƒั” ัะบ ะทะผั–ะฝะฝะฐ (ะฐะฑะพ ะตะปะตะผะตะฝั‚ ะผะฐัะธะฒัƒ) ัƒ ะฟะพั‚ะพั‡ะฝะพะผัƒ ะบะพะฝั‚ะตะบัั‚ั–, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0. (ะดะธะฒ. ะฟั€ะธะบะปะฐะด ะฝะธะถั‡ะต).

ะฃ TCL ั” ั€ั–ะทะฝั– ะบะพะผะฐะฝะดะธ ยซinfoยป, ัะบ-ะพั‚ ยซinfo existsยป, ยซinfo functionsยป, ยซinfo globalยป ั‚ะพั‰ะพ. ะขัƒั‚ ะผะธ ะฟะพะฑะฐั‡ะธะผะพ ะฟั€ะธะบะปะฐะด ยซั–ะฝั„ะพั€ะผะฐั†ั–ั ั–ัะฝัƒั”ยป.

ะะฐะฟั€ะธะบะปะฐะด:-

% set a 20
% puts $a
% 20
% puts [info exists a]
% 1
% unset a
%puts [info exists a]
% 0

ะ ั–ะทะฝั– ะฑั€ะตะบะตั‚ะธ ั– ั—ั… ะฟะพะฒะตะดั–ะฝะบะฐ

{} -> ะคั–ะณัƒั€ะฝั– ะดัƒะถะบะธ

ะคั–ะณัƒั€ะฝั– ะดัƒะถะบะธ ะฒ TCL ะณั€ัƒะฟัƒัŽั‚ัŒ ัะปะพะฒะฐ ั€ะฐะทะพะผ, ั‰ะพะฑ ัั‚ะฐั‚ะธ ะฐั€ะณัƒะผะตะฝั‚ะฐะผะธ. ะคั–ะณัƒั€ะฝั– ะดัƒะถะบะธ ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‚ัŒัั ะดะปั ะฒะธะทะฝะฐั‡ะตะฝะฝั ะฒั–ะดะบะปะฐะดะตะฝะพะณะพ ะฑะปะพะบัƒ โ€“ ั–ะฝัˆะธะผะธ ัะปะพะฒะฐะผะธ, ะนะพะณะพ ะผะพะถะฝะฐ ะทะฐะฟัƒัั‚ะธั‚ะธ ะŸะ†ะกะ›ะฏ ั€ะตัˆั‚ะธ ะบะพะผะฐะฝะดะธ ะฒ ะฟะพั‚ะพั‡ะฝะพะผัƒ ั€ัะดะบัƒ. ะกะธะผะฒะพะปะธ ะฒ ั„ั–ะณัƒั€ะฝะธั… ะดัƒะถะบะฐั… ะฟะตั€ะตะดะฐัŽั‚ัŒัั ะบะพะผะฐะฝะดั– ั‚ะพั‡ะฝะพ ั‚ะฐะบ, ัะบ ะฒะพะฝะธ ะฝะฐะฟะธัะฐะฝั–.

ะ”ะตัะบั– ะผะพะผะตะฝั‚ะธ, ะฟั€ะพ ัะบั– ะฒะฐั€ั‚ะพ ะฟะฐะผโ€™ัั‚ะฐั‚ะธ

  1. ะ—ะฐะผั–ะฝะฐ ะทะผั–ะฝะฝะพั— ะฒ ั„ั–ะณัƒั€ะฝะธั… ะดัƒะถะบะฐั… {} ะทะฐะฑะพั€ะพะฝะตะฝะฐ
  2. ะ’ั–ะฝ ะฒะธะบะพั€ะธัั‚ะพะฒัƒะฒะฐะฒัั ะดะปั ัั‚ะฒะพั€ะตะฝะฝั ั‚ะธะฟัƒ ะดะฐะฝะธั… ัะฟะธัะบัƒ

ะŸั€ะธะบะปะฐะด:-

% set x 10
% puts {$x}
% $x

%set number {1 2 3 4 5} -> ะขัƒั‚ ั‡ะธัะปะพ ั” ั‚ะธะฟะพะผ ะดะฐะฝะธั… ัะฟะธัะบัƒ

%ะฟะพะผั–ั‰ะฐั” $number

%1 2 3 4 5

[] -> ะบะฒะฐะดั€ะฐั‚ะฝั– ะดัƒะถะบะธ

ะšะฒะฐะดั€ะฐั‚ะฝั– ะดัƒะถะบะธ ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‚ัŒัั ะดะปั ัั‚ะฒะพั€ะตะฝะฝั ะฒะบะปะฐะดะตะฝะพั— ะบะพะผะฐะฝะดะธ. ะŸั€ะพัั‚ั–ัˆะต ะบะฐะถัƒั‡ะธ, ะฒะธั…ั–ะด ะพะดะฝั–ั”ั— ะบะพะผะฐะฝะดะธ ะฟะตั€ะตะดะฐั”ั‚ัŒัั ัะบ ะฐั€ะณัƒะผะตะฝั‚ ั–ะฝัˆั–ะน ะบะพะผะฐะฝะดั–. ะšะฒะฐะดั€ะฐั‚ะฝั– ะดัƒะถะบะธ ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‚ัŒัั ะดะปั ะฒะธะทะฝะฐั‡ะตะฝะฝั ะฑะปะพะบัƒ, ัะบะธะน ะฒะธะบะพะฝัƒั”ั‚ัŒัั ะŸะ•ะ ะ•ะ” ั€ะตัˆั‚ะพัŽ ะบะพะผะฐะฝะดะธ ะฒ ะฟะพั‚ะพั‡ะฝะพะผัƒ ั€ัะดะบัƒ, ะฐ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฟั–ะดัั‚ะฐะฒะปัั”ั‚ัŒัั ะฒ ั€ัะดะพะบ.

ะŸั€ะธะบะปะฐะด: โ€“

% set x 10
% puts "y : [set y [set x 10]]"
%y : 10
% puts "x : $x"
%x : 10

() -> ะบั€ัƒะณะปั– ะดัƒะถะบะธ

ะฆั ะบะพะผะฐะฝะดะฐ ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ัั‚ะฒะพั€ะตะฝะฝั ั‚ะธะฟัƒ ะดะฐะฝะธั… ะผะฐัะธะฒัƒ, ะฐ ั‚ะฐะบะพะถ ะดะปั ะฒะบะฐะทั–ะฒะบะธ ะฟั€ั–ะพั€ะธั‚ะตั‚ัƒ ะพะฟะตั€ะฐั‚ะพั€ะฐ.

% set a(1) 10
% set a(2) 20

ะขัƒั‚ ยซaยป โ€” ั†ะต ะผะฐัะธะฒ ะทั– ะทะฝะฐั‡ะตะฝะฝัะผะธ 10 ั– 20. ะะธะถั‡ะต ะฝะฐะฒะตะดะตะฝะพ ะบะพะผะฐะฝะดะธ ะดะปั ะดั€ัƒะบัƒ ะบะปัŽั‡ั–ะฒ, ะฟะฐั€ ะบะปัŽั‡ั–ะฒ-ะทะฝะฐั‡ะตะฝัŒ ั– ะทะฝะฐั‡ะตะฝัŒ ะผะฐัะธะฒัƒ.

% 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

ะ”ะปั ะดั€ัƒะบัƒ ยซN-ะณะพยป ะทะฝะฐั‡ะตะฝะฝั ะผะฐัะธะฒัƒ a ะผะธ ะฒะธะบะพั€ะธัั‚ะฐั”ะผะพ Puts $a(N)

ะั€ะณัƒะผะตะฝั‚ะธ ะบะพะผะฐะฝะดะฝะพะณะพ ั€ัะดะบะฐ TCL

ะ•ะปะตะผะตะฝั‚ะธ ะดะฐะฝะธั…, ั‰ะพ ะฟะตั€ะตะดะฐัŽั‚ัŒัั ัั†ะตะฝะฐั€ั–ัŽ ะท ะบะพะผะฐะฝะดะฝะพะณะพ ั€ัะดะบะฐ, ะฝะฐะทะธะฒะฐัŽั‚ัŒัั ะฐั€ะณัƒะผะตะฝั‚ะฐะผะธ. ะšั–ะปัŒะบั–ัั‚ัŒ ะฐั€ะณัƒะผะตะฝั‚ั–ะฒ ะบะพะผะฐะฝะดะฝะพะณะพ ั€ัะดะบะฐ ัั†ะตะฝะฐั€ั–ัŽ Tcl ะฟะตั€ะตะดะฐั”ั‚ัŒัั ัะบ ะณะปะพะฑะฐะปัŒะฝะฐ ะทะผั–ะฝะฝะฐ argc . ะ†ะผ'ั ัั†ะตะฝะฐั€ั–ัŽ Tcl ะฟะตั€ะตะดะฐั”ั‚ัŒัั ัั†ะตะฝะฐั€ั–ัŽ ัะบ ะณะปะพะฑะฐะปัŒะฝะฐ ะทะผั–ะฝะฝะฐ argv0 , ะฐ ั€ะตัˆั‚ะฐ ะฐั€ะณัƒะผะตะฝั‚ั–ะฒ ะบะพะผะฐะฝะดะฝะพะณะพ ั€ัะดะบะฐ ะฟะตั€ะตะดะฐัŽั‚ัŒัั ัะบ ัะฟะธัะพะบ ัƒ argv.

TCL ะผะฐั” 3 ะฟะพะฟะตั€ะตะดะฝัŒะพ ะฒะธะทะฝะฐั‡ะตะฝั– ะทะผั–ะฝะฝั–, ะฝะฐะฟั€ะธะบะปะฐะด

$argc   -> indicates the number of arguments passed to the script

$argv   -> indicates list of arguments

$argv0  -> indicates the name of script

ะะฐะฟั€ะธะบะปะฐะด:โ€“

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

ะฒะธั…ั–ะด:-

  • ะšั–ะปัŒะบั–ัั‚ัŒ ะฐั€ะณัƒะผะตะฝั‚ั–ะฒ, ะฟะตั€ะตะดะฐะฝะธั… ะดะพ ัั†ะตะฝะฐั€ั–ั—ะฒ: 3
  • ะกะบั€ะธะฟั‚ัƒ ะฟะตั€ะตะดะฐั”ั‚ัŒัั ัะฟะธัะพะบ ะฐั€ะณัƒะผะตะฝั‚ั–ะฒ: 10 20 30
  • ะะฐะทะฒะฐ ัั†ะตะฝะฐั€ั–ัŽ: arg-script.tcl

ะ’ะธั€ะฐะท TCL ั– Operaั‚ะพั€

ะ’ะธั€ะฐะท ัะบะปะฐะดะฐั”ั‚ัŒัั ะท ะพะฟะตั€ะฐะฝะดั–ะฒ ั– ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ. ะ’ั–ะฝ ะพะฑั‡ะธัะปัŽั”ั‚ัŒัั ะทะฐ ะดะพะฟะพะผะพะณะพัŽ ะบะพะผะฐะฝะดะธ "expr". Operaั‚ะพั€ะธ ะพั†ั–ะฝัŽัŽั‚ัŒัั ะฝะฐ ะพัะฝะพะฒั– ะฟั€ั–ะพั€ะธั‚ะตั‚ัƒ ั‚ะฐ ะฐัะพั†ั–ะฐั‚ะธะฒะฝะพัั‚ั–. ะœะพะฒะฐ TCL ะผะฐั” ะฒะฑัƒะดะพะฒะฐะฝั– ะพะฟะตั€ะฐั‚ะพั€ะธ, ัะบ ะฟะพะบะฐะทะฐะฝะพ ะฝะธะถั‡ะต

Operaะขะพั€ ะšะฐั‚ะตะณะพั€ั–ั Symbol ะŸะพะฟะตั€ะตะดะฝั–ัั‚ัŒ/ะฐัะพั†ั–ะฐั‚ะธะฒะฝั–ัั‚ัŒ
ะั€ะธั„ะผะตั‚ะธะบะฐ Operaั‚ะพั€ + - * / % ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะ ะตะปัั†ั–ะนะฝะธะน Operaั‚ะพั€ == != < > <= >= ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะปะพะณั–ั‡ะฝะธะน Operaั‚ะพั€ && || ! ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะŸะพะฑั–ั‚ะพะฒะธะน Operaั‚ะพั€ & | ^ ~ ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะขั€ั–ะฝะฐั€ะฝะธะน Operaั‚ะพั€ ?: ะŸั€ะฐะฒะพั€ัƒั‡ ะฝะฐะปั–ะฒะพ
Shift Operaั‚ะพั€ << >> ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะŸะพั€ั–ะฒะฝัะฝะฝั ั€ัะดะบั–ะฒ Operaั‚ะพั€ eq ne ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ะ•ะบัะฟะพะฝะตะฝั†ั–ั Operaั‚ะพั€ ** ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ
ัะฟะธัะพะบ Operaั‚ะพั€ ะ’ ะฝั– ะ—ะปั–ะฒะฐ ะฝะฐะฟั€ะฐะฒะพ

ะั€ะธั„ะผะตั‚ะธะบะฐ Operaั‚ะพั€

ะ’ะธั€ะฐะท TCL ัะบะปะฐะดะฐั”ั‚ัŒัั ะท ะบะพะผะฑั–ะฝะฐั†ั–ั— ะพะฟะตั€ะฐะฝะดั–ะฒ, ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ั– ะบั€ัƒะณะปะธั… ะดัƒะถะพะบ. ะ ะพะทะณะปัะฝัŒะผะพ ะฟั€ะธะบะปะฐะด ะฐั€ะธั„ะผะตั‚ะธั‡ะฝะธั… ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ัƒ TCL

+ ะ”ะพะดะฐะนั‚ะต ะดะฒะฐ ะฐะฑะพ ะฑั–ะปัŒัˆะต ะพะฟะตั€ะฐะฝะดั–ะฒ

ะะฐะฟั€ะธะบะปะฐะด:-

%set a 10 
%set b 20
%puts [expr $a + $b]
30

- ะ’ั–ะดะฝั–ะผะฐั” ะดะฒะฐ ะฐะฑะพ ะฑั–ะปัŒัˆะต ะพะฟะตั€ะฐะฝะดั–ะฒ

ะะฐะฟั€ะธะบะปะฐะด:-

%set a 20 
%set b 10
%puts [expr $a - $b]
10

* ะœะฝะพะถะตะฝะฝั ะดะฒะพั… ะฐะฑะพ ะฑั–ะปัŒัˆะต ะพะฟะตั€ะฐะฝะดั–ะฒ

%set a 20 
%set b 10
%puts [expr $a * $b]
200

/ ะ ะพะทะดั–ะปั–ั‚ัŒ ั‡ะธัะตะปัŒะฝะธะบ ะฝะฐ ะฒั–ะดะผะตะฝะฝะธะบ

%set a 20 
%set b 10
%puts [expr $a / $b]
2

% ะžะฟะตั€ะฐั‚ะพั€ ะผะพะดัƒะปั ะดั–ะปะธั‚ัŒ ั‡ะธัะตะปัŒะฝะธะบ ะฝะฐ ะทะผะตะฝัˆัƒะฒะฐั‡, ะฐะปะต ะฟะพะฒะตั€ั‚ะฐั” ะฝะฐะณะฐะดัƒะฒะฐะฝะฝั

%set a 20 
%set b 10
%puts [expr $a % $b]
0

ะ ะตะปัั†ั–ะนะฝะธะน Operaั‚ะพั€

ะŸะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ ะฑั–ะปัŒัˆะต ะทะฐ ะทะฝะฐั‡ะตะฝะฝั ะฟั€ะฐะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ. ะฏะบั‰ะพ ั‚ะฐะบ, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0.

%set a 20 
%set b 10
%puts [expr $a > $b]
1

ะŸะตั€ะตะฒั–ั€ั‚ะต, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ ะผะตะฝัˆะต ะทะฐ ะทะฝะฐั‡ะตะฝะฝั ะฟั€ะฐะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ. ะฏะบั‰ะพ ั‚ะฐะบ, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 10 
%set b 20
%puts [expr $a < $b]
1

>= ะŸะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ ะฑั–ะปัŒัˆะต ะฐะฑะพ ะดะพั€ั–ะฒะฝัŽั” ะทะฝะฐั‡ะตะฝะฝัŽ ะฟั€ะฐะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ, ัะบั‰ะพ ั‚ะฐะบ, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 20 
%set b 10
%puts [expr $a >= $b]
1

<= ะŸะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ ะผะตะฝัˆะต ะฐะฑะพ ะดะพั€ั–ะฒะฝัŽั” ะทะฝะฐั‡ะตะฝะฝัŽ ะฟั€ะฐะฒะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ, ัะบั‰ะพ ั‚ะฐะบ, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 20 
%set b 10
%puts [expr $a <= $b]
0

!= ะŸะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะดะฒะพั… ะพะฟะตั€ะฐะฝะดั–ะฒ ั€ั–ะฒะฝั– ั‡ะธ ะฝั–, ัะบั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ะฝะต ั€ั–ะฒะฝั–, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 20 
%set b 10
%puts [expr $a != $b]
1

== ะŸะตั€ะตะฒั–ั€ัั”, ั‡ะธ ะทะฝะฐั‡ะตะฝะฝั ะดะฒะพั… ะพะฟะตั€ะฐะฝะดั–ะฒ ั€ั–ะฒะฝั– ั‡ะธ ะฝั–, ัะบั‰ะพ ั‚ะฐะบ, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 20 
%set b 10
%puts [expr $a == $b]
0

ะปะพะณั–ั‡ะฝะธะน Operaั‚ะพั€

&& ะฏะบั‰ะพ ะพะฑะธะดะฒะฐ ะพะฟะตั€ะฐะฝะดะธ ะฝะต ะฝัƒะปัŒะพะฒั–, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 20 
%set b 10
%puts [expr $a && $b]
1

|| ะฏะบั‰ะพ ะฑัƒะดัŒ-ัะบะธะน ั–ะท ะดะฒะพั… ะพะฟะตั€ะฐะฝะดั–ะฒ ะฒั–ะดะผั–ะฝะฝะธะน ะฒั–ะด ะฝัƒะปั, ั‚ะพะดั– ัƒะผะพะฒะฐ ัั‚ะฐั” ั–ัั‚ะธะฝะฝะพัŽ ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0

%set a 0 
%set b 10
%puts [expr $a || $b]
1

! ะ’ะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั ะทะฒะพั€ะพั‚ะฝะพะณะพ ั€ะตะทัƒะปัŒั‚ะฐั‚ัƒ ะฑัƒะดัŒ-ัะบะพะณะพ ะฒะธั€ะฐะทัƒ. ะขัƒั‚ ัƒ ะฒะธั…ั–ะดะฝะธั… ะดะฐะฝะธั… ะฒะธ ะผะพะถะตั‚ะต ะฟะพะฑะฐั‡ะธั‚ะธ, ั‰ะพ ะทะฝะฐั‡ะตะฝะฝั 'a' ั‚ะตะฟะตั€ ะทะผั–ะฝะธะปะพัั ะฝะฐ 1 ะท 0. ะขะพะดั– ัะบ ะทะฝะฐั‡ะตะฝะฝั 'b' ัั‚ะฐะปะพ 0 ะท 1.

%set a 0 
%set b 1
%puts [expr !$a]
1
%puts [expr !$b]
0

ะŸะพะฑั–ั‚ะพะฒะธะน Operaั‚ะพั€

& (ะฟะพั€ะพะทั€ัะดะฝะพ ั‚ะฐ) ะฒะธะบะพะฝะฐะนั‚ะต ะฟะพะฑั–ั‚ะพะฒัƒ ะพะฟะตั€ะฐั†ั–ัŽ ั‚ะฐ ะดะพั‚ั€ะธะผัƒะนั‚ะตัั ะฝะฐะฒะตะดะตะฝะพั— ะฝะธะถั‡ะต ั‚ะฐะฑะปะธั†ั– ะดะปั ะฒะธะบะพะฝะฐะฝะฝั ะพะฟะตั€ะฐั†ั–ะน.

A B A & B
0 0 0
0 1 0
1 1 1
1 0 0

ะะฐะฟั€ะธะบะปะฐะด:-

%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 

| (ะฟะพั€ะพะทั€ัะดะฝะพ ะฐะฑะพ) ะฒะธะบะพะฝะฐะนั‚ะต ะฟะพั€ะพะทั€ัะดะฝัƒ ะพะฟะตั€ะฐั†ั–ัŽ ั‚ะฐ ะดะพั‚ั€ะธะผัƒะนั‚ะตัั ั‚ะฐะฑะปะธั†ั– ะฝะธะถั‡ะต

A B A | ะ‘
0 0 0
0 1 1
1 1 1
1 0 1

ะะฐะฟั€ะธะบะปะฐะด:-

%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 

^ (ะฟะพะฑั–ั‚ะพะฒะพ ะตะบัะบะปัŽะทะธะฒะฝะต ะฐะฑะพ) ะฒะธะบะพะฝะฐะนั‚ะต ะฟะพะฑั–ั‚ะพะฒัƒ ะพะฟะตั€ะฐั†ั–ัŽ ั‚ะฐ ะดะพั‚ั€ะธะผัƒะนั‚ะตััŒ ั‚ะฐะฑะปะธั†ั– ะฝะธะถั‡ะต

A B ะ ^ ะ‘
0 0 0
0 1 1
1 1 0
1 0 1

ะะฐะฟั€ะธะบะปะฐะด:-

%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

ะžะฟะตั€ะฐั‚ะพั€ ~ (ะฟะพั€ะพะทั€ัะดะฝะต ะทะฐะฟะตั€ะตั‡ะตะฝะฝั) ะทะผั–ะฝัŽั” ะบะพะถะตะฝ 1 ะฝะฐ 0 ั– 0 ะฝะฐ 1, ะดะพั‚ั€ะธะผัƒะนั‚ะตัั ั‚ะฐะฑะปะธั†ั– ัะบ ะฟะพัะธะปะฐะฝะฝั

A ~A
0 1
1 0
%set A 7
%puts [expr ~$A]
-8

ะขั€ั–ะฝะฐั€ะฝะธะน Operaั‚ะพั€ (?:)

ะกะธะฝั‚ะฐะบัะธั ั”

condition-expression?  expression_1: expression_2

ะฏะบั‰ะพ ัƒะผะพะฒะฐ-exp ั–ัั‚ะธะฝะฝะฐ, exp1 ะพะฑั‡ะธัะปัŽั”ั‚ัŒัั ั– ะฟะพะฒะตั€ั‚ะฐั”ั‚ัŒัั ั€ะตะทัƒะปัŒั‚ะฐั‚. ะฏะบั‰ะพ cond-exp ั” ั…ะธะฑะฝะธะผ, exp2 ะพะฑั‡ะธัะปัŽั”ั‚ัŒัั ั‚ะฐ ะฟะพะฒะตั€ั‚ะฐั”ั‚ัŒัั ะนะพะณะพ ั€ะตะทัƒะปัŒั‚ะฐั‚. ะฃ ะฝะฐัˆะพะผัƒ ะฟั€ะธะบะปะฐะดั– exp1 ั” ั–ัั‚ะธะฝะฝะธะผ, ะพัะบั–ะปัŒะบะธ ะทะฝะฐั‡ะตะฝะฝั A ะฑั–ะปัŒัˆะต 6.

%set A 7
%set result [expr $A > 6 ? true : false]
%puts $result
true

Shift Operaั‚ะพั€

Shift ะฟะพะทะฝะฐั‡ะฐั”ั‚ัŒัั ะฐะฑะพ << ะพะฟะตั€ะฐั‚ะพั€ะพะผ ะทััƒะฒัƒ ะฒะปั–ะฒะพ, ะฐะฑะพ ะพะฟะตั€ะฐั‚ะพั€ะพะผ >> ะทััƒะฒัƒ ะฒะฟั€ะฐะฒะพ. ะ”ะปั << ะพะฟะตั€ะฐั‚ะพั€ะฐ ะทััƒะฒัƒ ะฒะปั–ะฒะพ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะธั… ะพะฟะตั€ะฐะฝะดั–ะฒ ะฟะตั€ะตะผั–ั‰ัƒั”ั‚ัŒัั ะฒะปั–ะฒะพ ะฝะฐ ะบั–ะปัŒะบั–ัั‚ัŒ ะฑั–ั‚ั–ะฒ, ะฒะธะทะฝะฐั‡ะตะฝัƒ ะฟั€ะฐะฒะธะผ ะพะฟะตั€ะฐะฝะดะพะผ.

%set A 7
%set result [expr $A << 2]
%puts $result

ะ”ะปั ะพะฟะตั€ะฐั‚ะพั€ะฐ ะทััƒะฒัƒ ะฒะฟั€ะฐะฒะพ ะทะฝะฐั‡ะตะฝะฝั ะปั–ะฒะธั… ะพะฟะตั€ะฐะฝะดั–ะฒ ะฟะตั€ะตะผั–ั‰ัƒั”ั‚ัŒัั ะฒะฟั€ะฐะฒะพ ะฝะฐ ะบั–ะปัŒะบั–ัั‚ัŒ ะฑั–ั‚ั–ะฒ, ะฒะธะทะฝะฐั‡ะตะฝัƒ ะฟั€ะฐะฒะธะผ ะพะฟะตั€ะฐะฝะดะพะผ.

%set A 7
%set result [expr $A >> 2]
%puts $result

ะŸะพั€ั–ะฒะฝัะฝะฝั ั€ัะดะบั–ะฒ Operaั‚ะพั€

ะžะฟะตั€ะฐั‚ะพั€ ะฟะพั€ั–ะฒะฝัะฝะฝั ั€ัะดะบั–ะฒ ะฟะพั€ั–ะฒะฝัŽั” ะทะฝะฐั‡ะตะฝะฝั ะพะฑะพั… ะพะฟะตั€ะฐะฝะดั–ะฒ. ะฏะบั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ะพะฟะตั€ะฐะฝะดะฐ ะพะดะฝะฐะบะพะฒะต, ั‚ะพะดั– ะฒั–ะฝ ะฟะพะฒะตั€ะฝะต 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ะฝะต 0. ะฃ ะฟั€ะธะบะปะฐะดั– ะทะฝะฐั‡ะตะฝะฝั ัะบ ะดะปั A, ั‚ะฐะบ ั– ะดะปั B ะดะพั€ั–ะฒะฝัŽั” 7, ั‚ะพะผัƒ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฟะพะฒะตั€ะฝะต 1.

ะะฐะฟั€ะธะบะปะฐะด:-

%set A 7 
%set B 7
%set result [expr $A eq $B]
%puts $result
1

Ne (ัะบั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ะพะฑะพั… ะพะฟะตั€ะฐะฝะดั–ะฒ ั€ั–ะทะฝั–, ั‚ะพะดั– ะฟะพะฒะตั€ั‚ะฐั”ั‚ัŒัั 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั”ั‚ัŒัั 0)

%set A 7 
%set B 8
%set result [expr $A ne $B]
%puts $result
1

ะžะฟะตั€ะฐั‚ะพั€ ะฟั–ะดะฒะตะดะตะฝะฝั ะดะพ ัั‚ะตะฟะตะฝั

Pow () ั– ** ะพะดะฝะฐะบะพะฒั–. ะ’ั–ะฝ ะทะฐะฒะถะดะธ ะฟะพะฒะตั€ั‚ะฐั” ะฟะปะฐะฒะฐัŽั‡ะต ะทะฝะฐั‡ะตะฝะฝั.

** ะฒะบะฐะทัƒั” ะฟะพั‚ัƒะถะฝั–ัั‚ัŒ ะฟะพั‚ั€ั–ะฑะฝะพะณะพ ะพะฟะตั€ะฐะฝะดะฐ.

ะะฐะฟั€ะธะบะปะฐะด:-

%set A 7
%set result [expr $A ** 2]
%puts $result
49

ัะฟะธัะพะบ Operaั‚ะพั€

ะฏะบั‰ะพ ะฝะตะพะฑั…ั–ะดะฝะต ะทะฝะฐั‡ะตะฝะฝั ะทะฝะฐะนะดะตะฝะพ ัƒ ะฒะธะทะฝะฐั‡ะตะฝะพะผัƒ ัะฟะธัะบัƒ, ะฒะพะฝะพ ะฟะพะฒะตั€ั‚ะฐั” 1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ั‚ะฐั” 0. ะฃ ะฟั€ะธะบะปะฐะดั– ะทะฝะฐั‡ะตะฝะฝั 1 ั–ัะฝัƒั” ัƒ ะทะผั–ะฝะฝั–ะน ยซaยป, ะพั‚ะถะต, ะฒะพะฝะพ ะฟะพะฒะตั€ั‚ะฐั” 1.

set a {1 2 3}
if {1 in $a} {
puts "ok"
} else {
puts "fail"
}
Output: ok

ni, ัะบั‰ะพ ะฝะตะพะฑั…ั–ะดะฝะต ะทะฝะฐั‡ะตะฝะฝั ะทะฝะฐะนะดะตะฝะพ ัƒ ะฒะธะทะฝะฐั‡ะตะฝะพะผัƒ ัะฟะธัะบัƒ, ั‚ะพะดั– ะฒะพะฝะพ ะฟะพะฒะตั€ะฝะต 0, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ะฝะต 1.

ะะฐะฟั€ะธะบะปะฐะด: -

set a {1 2 3}
if {1 ni $a} {
puts "ok"
} else {
puts "fail"
}
Output: fail

ะšะพะฝั‚ั€ะพะปัŒ ะฟะพั‚ะพะบัƒ TCL ั– ะฟั€ะธะนะฝัั‚ั‚ั ั€ั–ัˆะตะฝัŒ

ะ†ัะฝัƒัŽั‚ัŒ ั€ั–ะทะฝั– ะบะพะผะฐะฝะดะธ ะบะตั€ัƒะฒะฐะฝะฝั ะฟะพั‚ะพะบะพะผ ั– ะฟั€ะธะนะฝัั‚ั‚ั ั€ั–ัˆะตะฝัŒ, ัะบั– ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‚ัŒัั ะดะปั ะทะผั–ะฝะธ ะฟะพั‚ะพะบัƒ ะฟั€ะพะณั€ะฐะผะธ. ะ’ะธะบะพะฝะฐะฝะฝั ะฟั€ะพะณั€ะฐะผะธ ะทะฐะฒะถะดะธ ะฟะพั‡ะธะฝะฐั”ั‚ัŒัั ะท ะฒะตั€ั…ะฝัŒะพั— ั‡ะฐัั‚ะธะฝะธ ะฒะธั…ั–ะดะฝะพะณะพ ั„ะฐะนะปัƒ ะดะพ ะฝะธะถะฝัŒะพั—.

ะžะฟะตั€ะฐั‚ะพั€ If ัะบะปะฐะดะฐั”ั‚ัŒัั ะท ะปะพะณั–ั‡ะฝะพะณะพ ะฒะธั€ะฐะทัƒ, ะทะฐ ัะบะธะผ ัะปั–ะดัƒัŽั‚ัŒ ะพะดะธะฝ ะฐะฑะพ ะฑั–ะปัŒัˆะต ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ.

ะฏะบั‰ะพ ... ั‚ะฒะตั€ะดะถะตะฝะฝั

ะกะธะฝั‚ะฐะบัะธั: -

ัะบั‰ะพ ะฒะธั€ะฐะท ?ั‚ะพ? ั‚ั–ะปะพ

ัะบั‰ะพ ะฒะธั€ะฐะท ะพั†ั–ะฝัŽั”ั‚ัŒัั ัะบ ั–ัั‚ะธะฝะฐ, ั‚ะพะดั– ะฒะธะบะพะฝัƒั”ั‚ัŒัั ั‚ั–ะปะพ ะบะพะผะฐะฝะดะธ.

ะะฐะฟั€ะธะบะปะฐะด:-

set age 10

if {$age < 20} {
puts "Age is less than 20"
}

Output: Age is less than 20

ะžะฟะตั€ะฐั‚ะพั€ If ... else

ะกะธะฝั‚ะฐะบัะธั: -

ะฏะบั‰ะพ ะฒะธั€ะฐะท ? ั‚ะพะดั– body_1 ั‰ะต body_2

ะฏะบั‰ะพ ะฒะธั€ะฐะท ะพั†ั–ะฝะตะฝะพ ัะบ ั–ัั‚ะธะฝะฝะธะน, ะฒั–ะฝ ะฟะพะฒะตั€ะฝะต ั‚ั–ะปะพ_1, ั–ะฝะฐะบัˆะต ะฟะพะฒะตั€ะฝะต ั‚ั–ะปะพ_2

ะŸั€ะธะบะปะฐะด:--

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

ะ’ะบะปะฐะดะตะฝะธะน ะพะฟะตั€ะฐั‚ะพั€ if..else

ะฆะต ะพะทะฝะฐั‡ะฐั”, ั‰ะพ ะพะดะธะฝ ะพะฟะตั€ะฐั‚ะพั€ if ะฐะฑะพ else..if ะผะพะถะฝะฐ ะฟะพะผั–ัั‚ะธั‚ะธ ะฒ ั–ะฝัˆะธะน ะพะฟะตั€ะฐั‚ะพั€ if ะฐะฑะพ else..if.

ะกะธะฝั‚ะฐะบัะธั: -

If  {expression_1} {
Body_1
If {expression_2} {
Body_2
}
}

ะŸั€ะธะบะปะฐะด:--

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

ะ—ะฐัะฒะฐ ะฟะตั€ะตะบะปัŽั‡ะตะฝะฝั

ะ†ะฝัั‚ั€ัƒะบั†ั–ั switch ะดะฐั” ะทะผะพะณัƒ ะฟะตั€ะตะฒั–ั€ะธั‚ะธ ะทะผั–ะฝะฝัƒ ะฝะฐ ะฒั–ะดะฟะพะฒั–ะดะฝั–ัั‚ัŒ ัะฟะธัะบัƒ ะทะฝะฐั‡ะตะฝัŒ. ะ’ั–ะฝ ะพะฑั‡ะธัะปัŽั” ัะฟะธัะพะบ ะทะฝะฐั‡ะตะฝัŒ ั– ะฟะพะฒะตั€ั‚ะฐั” ั€ะตะทัƒะปัŒั‚ะฐั‚ ั†ัŒะพะณะพ ะพะฑั‡ะธัะปะตะฝะฝั. ะฏะบั‰ะพ ะถะพะดะฝะต ะทะฝะฐั‡ะตะฝะฝั ะฝะต ะทะฑั–ะณะฐั”ั‚ัŒัั, ะฟะพะฒะตั€ั‚ะฐัŽั‚ัŒัั ะทะฝะฐั‡ะตะฝะฝั ะทะฐ ะทะฐะผะพะฒั‡ัƒะฒะฐะฝะฝัะผ.

ะŸั€ะธะบะปะฐะด:

#!/usr/bin/tclsh

# switch_cmd.tcl

set domain x
switch $domain {

    x { puts "x" }
    y { puts "y" }
    z { puts "z" }
    default { puts "unknown" }
}

ะ’ะบะปะฐะดะตะฝะธะน ะฟะตั€ะตะผะธะบะฐั‡

ะ’ะบะปะฐะดะตะฝะธะน ะพะฟะตั€ะฐั‚ะพั€ switch ะพะทะฝะฐั‡ะฐั” ะพะฟะตั€ะฐั‚ะพั€ switch ะฒ ะพะฟะตั€ะฐั‚ะพั€ั– switch.

ัะธะฝั‚ะฐะบัะธั :-

switch <switchingstring1> {
   <matchstring1> {
      body1
      switch <switchingstring2> {
        <matchstring2> {
           body2
         }
          ...
    switch <switchingstringN> {
          <matchStringN> {
           bodyN
         }
      }
   }

ะŸั€ะธะบะปะฐะด: ัƒ ะฝะฐัั‚ัƒะฟะฝะพะผัƒ ะฟั€ะธะบะปะฐะดั– ะทะฝะฐั‡ะตะฝะฝั a ะดะพั€ั–ะฒะฝัŽั” 100, ั– ะทะฐ ะดะพะฟะพะผะพะณะพัŽ ั‚ะพะณะพ ัะฐะผะพะณะพ ะบะพะดัƒ ะผะธ ะฟะตั€ะตะผะธะบะฐั”ะผะพ ะพะฟะตั€ะฐั‚ะพั€ ะดะปั ั–ะฝัˆะพะณะพ ะทะฝะฐั‡ะตะฝะฝั b ะดะพั€ั–ะฒะฝัŽั” 200. ะ’ะธั…ั–ะด ะฟะพะบะฐะถะต ะทะฝะฐั‡ะตะฝะฝั ัะบ ะดะปั a, ั‚ะฐะบ ั– ะดะปั 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"
        }
     }
   }   
}

ะ’ะธั…ั–ะด:-

ะ—ะฝะฐั‡ะตะฝะฝั a ะดะพั€ั–ะฒะฝัŽั” 100

ะ—ะฝะฐั‡ะตะฝะฝั b ะดะพั€ั–ะฒะฝัŽั” 200

ะžะฟะตั€ะฐั‚ะพั€ ั†ะธะบะปัƒ TCL

ะžะฟะตั€ะฐั‚ะพั€ ั†ะธะบะปัƒ ะดะพะทะฒะพะปัั” ะฒะธะบะพะฝัƒะฒะฐั‚ะธ ะพะฟะตั€ะฐั‚ะพั€ ะฐะฑะพ ะณั€ัƒะฟัƒ ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ะบั–ะปัŒะบะฐ ั€ะฐะทั–ะฒ. Tcl ะฝะฐะดะฐั” ะฝะฐัั‚ัƒะฟะฝั– ั‚ะธะฟะธ ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ั†ะธะบะปัƒ.

ะŸะพะบะธ ะบะพะผะฐะฝะดะฐ

ะšะพะปะธ ะทะฐะดะฐะฝะฐ ัƒะผะพะฒะฐ ั” ั–ัั‚ะธะฝะฝะพัŽ, ะพะฟะตั€ะฐั‚ะพั€ ะฐะฑะพ ะณั€ัƒะฟะฐ ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ะฟะพะฒั‚ะพั€ัŽัŽั‚ัŒัั ะฒ ั‚ั–ะปั– ั†ะธะบะปัƒ.

ัะธะฝั‚ะฐะบัะธั:

While  {condition} {
    Statements
}

ะะฐะฟั€ะธะบะปะฐะด: -

#!/usr/bin/tclsh

Set a 10

While {$a < 12} {
    Puts "a is $a"
    incr a
}

ะ’ะธั…ั–ะด:-

ะฐ ะดะพั€ั–ะฒะฝัŽั” 10

ะฐ ะดะพั€ั–ะฒะฝัŽั” 11

ะฃ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฒะธั‰ะต ะฟั€ะธะบะปะฐะดั– ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะฒะฑัƒะดะพะฒะฐะฝะฐ ะบะพะผะฐะฝะดะฐ "incr". ะฆะต ะพะทะฝะฐั‡ะฐั”, ั‰ะพ ะทะฝะฐั‡ะตะฝะฝั ยซaยป ะฑัƒะดะต ะทะฑั–ะปัŒัˆะตะฝะพ ะฝะฐ 1 ะดะพ ะผะฐะบัะธะผะฐะปัŒะฝะพะณะพ ะทะฝะฐั‡ะตะฝะฝั (<12).

ะ”ะปั ะฝะฐะบะฐะทัƒ

ะ’ั–ะฝ ะฒะธะบะพะฝัƒั” ะฟะพัะปั–ะดะพะฒะฝั–ัั‚ัŒ ะพะฟะตั€ะฐั‚ะพั€ั–ะฒ ะบั–ะปัŒะบะฐ ั€ะฐะทั–ะฒ ะฝะฐ ะพัะฝะพะฒั– ะทะฝะฐั‡ะตะฝะฝั ะปั–ั‡ะธะปัŒะฝะธะบะฐ. ะ’ั–ะฝ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะฝะพ ะทะฑั–ะปัŒัˆัƒั”ั‚ัŒัั ะฐะฑะพ ะทะผะตะฝัˆัƒั”ั‚ัŒัั ะฟั–ะด ั‡ะฐั ะบะพะถะฝะพะณะพ ะฟะพะฒั‚ะพั€ะตะฝะฝั ั†ะธะบะปัƒ.

ัะธะฝั‚ะฐะบัะธั :-

For {start} {test} {next} {
Body
}

ะŸั€ะธะบะปะฐะด: ัƒ ะฝะฐะฒะตะดะตะฝะพะผัƒ ะฝะธะถั‡ะต ะฟั€ะธะบะปะฐะดั– ะทะฝะฐั‡ะตะฝะฝั ยซiยป ะฒัั‚ะฐะฝะพะฒะปะตะฝะพ ะฝะฐ 0 ั– ะทะฑั–ะปัŒัˆัƒั”ั‚ัŒัั ะดะพ ะทะฝะฐั‡ะตะฝะฝั <5.

#!/usr/bin/tclsh

for {set i 0} {$i < 5} {incr i} {
put $i
}

ะ’ะธั…ั–ะด:-

0 
1 
2 
3 
4

ะžัะฝะพะฒะฝะฐ ั–ะฝั„ะพั€ะผะฐั†ั–ั:

  • TCL โ€” ั†ะต ะผะพะฒะฐ ัั†ะตะฝะฐั€ั–ั—ะฒ ะฝะฐ ะพัะฝะพะฒั– ั€ัะดะบั–ะฒ, ะฐ ั‚ะฐะบะพะถ ะฟั€ะพั†ะตะดัƒั€ะฝะฐ ะผะพะฒะฐ
  • ะฆั ะผะพะฒะฐ ะทะฐะทะฒะธั‡ะฐะน ะฒะธะบะพั€ะธัั‚ะพะฒัƒั”ั‚ัŒัั ะดะปั GUI ั‚ะฐ ั‚ะตัั‚ัƒะฒะฐะฝะฝั
  • ะฃ TCL ะทะฐ ะทะฐะผะพะฒั‡ัƒะฒะฐะฝะฝัะผ ะฒัะต ั” ั€ัะดะบะพะผ
  • TCL โ€” ั†ะต ะฟั€ะพะณั€ะฐะผะฐ ะพะฑะพะปะพะฝะบะธ, ัะบะฐ ะทั‡ะธั‚ัƒั” ะบะพะผะฐะฝะดัƒ TCL ะทั– ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะณะพ ะฒะฒะพะดัƒ ะฐะฑะพ ะท ั„ะฐะนะปัƒ ั‚ะฐ ะดะฐั” ะฑะฐะถะฐะฝั– ั€ะตะทัƒะปัŒั‚ะฐั‚ะธ.
  • ะŸั€ะพะณั€ะฐะผะฐ TCL ะฟะพะฒะธะฝะฝะฐ ะผะฐั‚ะธ ั€ะพะทัˆะธั€ะตะฝะฝั .tcl

ะŸั–ะดััƒะผัƒะนั‚ะต ั†ะตะน ะฟะพัั‚ ะทะฐ ะดะพะฟะพะผะพะณะพัŽ: