1、set & unset
1 %set a hello ;#定義變數 a 並賦值
2 =>hello
3 %puts $a ;#輸出變數值
4 =>hello
5 %set a 「test tcl」 ;#重新賦值
6 =>test tcl
7 %set a ;#輸出變數值,此時不加」$」
8 => test tcl
9 %puts $a ;#輸出變數值,此時要加」$」
10 =>test tcl
11 %puts a ;#輸出字元」a」
12 => a
13 %set b $a ;#將 a 的值賦給 b
14 =>test tcl
15 %puts $b
16 =>test tcl
17 % unset a ;#釋放變數
18 %puts $a ;#試圖輸出未定義變數的值
19 => can't read "a": no such variable
2、$ &
1 %set foo oo
2 =>oo
3 %set dollar foo
4 =>foo
5 %set x $$dollar
6 =>$foo ;#只解釋一次,將「 $dollar」用 dollar 的值( foo)代替,
7 ;#命令等效為 set x ,大括阻止替換。
8 % set x
9 =>$foo
10 %set y $x
11 =>$foo ; #一輪替換
12 13 % set b [set a 5] ;#set a 5 命令輸出的結果賦給 b
14 =>5
15 %puts $b ;#方括號命令替換,expr表示進行數學計算,外圍用方括號括起來
16 =>5
17 %set c [expr 5 * 10] ;#將乘式結果賦給 c
18 =>50
3、" " &
雙引號和花括號將多個單詞組織成乙個引數,也是一種替換操作。如果花括號是用做替換操作,則它會阻止內部的巢狀替換,如果花括號用做界限符,如過程定義時用做界限過程體時,不阻止替換操作,其他還有 if 條件語句、迴圈語句、 switch 語句和過程宣告、數學表示式等。
%set s hello
=>hello
%puts stdout "the length of \"$s \"is [string length $s]" ;# 「string length」 命令是計算
6tcl 程式設計初步
;#字串長度,用反斜槓」\」來引用特殊字元。
=>the length of hello is 5
%puts stdout
=>the length of $s is [string length $s] ;#替換操作被阻止
%set x 10
=>10
(bin) 35 % set y 20
=>20
(bin) 36 % set z [expr ] ;#expr 表示進行數**算,要用括起來
=>30 ;#用{}來組織算術表示式,不阻止$替換操作
% if
=> x=10 ;#在條件語句中, {}用來界定條件體和執行體,不阻止內部替換
4、 \
% set x 100
=>100
%set y "$x"
=>100
%set y "\$x"
=>$x ;#引用$符
%puts "he\nllo" ;#回車換行
=>he
llo%puts "\a" ;#震鈴(需要在 tclsh 下執行)
% set b [puts \
$y ] ;#**換行
=>$x
5、incr
incr 命令根據指定的步長來增加或減少引數的值。當步長為負時,減少引數值;當步長為正
時,增加引數值。預設步長為+1。
%set a 10 ; incr a
=>a=11
%set a 10 ; incr a –1
=> a=9
6、基本命令集
%set var1 hello
%set var2 world
=>helloworld
%puts $var1
=>helloworld ;#var1 的內容被更改!
format
;#要取第 2 個變元值,即 5。位置說明符的格式為 2$,並用\來引用符號$:
% set res [format "%2\$s" 1 5 9]
=>5
%puts $res
=>5
% set str [format "%3\$s %1\$s %2\$s" "are" "right" "you"]
=> you are right
1 %format "%x" 20
2 =>14 ;# 將 20 轉換為十六進製制數
3 %format "%8x" 20
4 => 14 ;# 將 20 轉換為十六進製制數,8 位資料寬度,右對齊
5 %format "%08x" 20
6 7 =>00000014 ;#與上一命令相似,但用 0 添齊
8 %format "%-8x" 20
9 =>14 ;#寬度 8 位,左對齊
10 %format "%#08x" 20
11 =>0x000014 ;#將 20 轉換為十六進製制數,並新增字首」0x」,
12 ;#總寬度為 8 為,右對齊(預設),前導空格用 0 補齊。
13 % set c [format %c%e%c 40 30000 41 ]
14 => ( 3.000000e+004) ;#%c 將整數轉換為對應的 ascii 字元, 40 和 41 分別對應」(「和」)」
15 % set num [scan aa %c var1 ]
16 => 1 ;#將字串」aa」的第乙個字元」a」轉換為對應整數,
17 ;#並賦值給 var1 變數,返回成功轉換個數
18 % puts $var1
19 => 65 ;#字元 a 對應的整數
上例最後乙個 format 格式命令中, 」%c」乙個整數轉換為對應 ascii 字元輸出
scan
%set num [scan "abcabc" "%c%c " var1 var2]
=> 2
%puts "$var1 $var2"
=> 97 98
% set num [scan "abcabc" "%c%c" ]
=> 97 98
%puts $num
=> 97 98 ;#忘記指定輸出變數的結果
;#格式描述說明要掃瞄小寫的 a 到 z 區間的連續字元,用到了花括號表明是乙個集合
% scan "abcabc" res
=> 1
% puts $res
=> abc
% scan "abcabc" res
=> 1
% puts $res
=> abcab
% scan "abcab" res
=>1 ;#匹配非 a 到 b 的字元
% puts $res
=>abc
% scan abcab res
=>1 ;#照樣可以指定匹配字元數
% puts $res
=>ab
binary
1 %set b [binary format "s" 25664]
2 => @d ;#整數 25664 以十六進製制表示為 6440h。 「s」為格式說明
3 ;#符,按照由低到高位元組順序儲存。
4 % puts $b ;#數值被壓縮為兩個位元組,輸出的結果為兩個壓縮位元組對
5 => @d ;#應的兩個字元, @的 ascii 碼為 40h, d 的 ascii 碼為 64h
6 % binary scan $b "s" var
7 => 1 ;#返回轉換成功的次數
8 % puts $var ;#binary scan 從二進位制數 b 中將數值恢復並存入變數
9 var
10 => 25664
11 % binary scan 1 c var ;#從字元 1 中恢復數值。字元 1 的 ascii 碼=31h, 31h 對應十
12 =>1 ;#進製整數為 49
13 % puts $var
14 => 49
subst
% subst
=> a=foo bar sum=3
% subst sum=}
=> a= sum= ;#資料內部的花括號不阻止替換
指令碼語言學習 一
tempconvert.py tempstr input 請輸入帶有符號的溫度值 if tempstr 1 in f f c eval tempstr 0 1 32 1.8 print 轉換後的溫度是c format c elif tempstr 1 in c c f 1.8 eval tempst...
TCL指令碼語言學習(一)
編譯環境設定 1 軟體安裝 安裝activetcl 2 編寫tcl指令碼檔案 tcl是一種很通用的指令碼語言,它幾乎在所有的平台上都可以解釋執行,功能強大。是tool command language的縮寫,發音為 tickle 實際上包含了兩個部分 乙個語言和乙個庫。首先,tcl是一種簡單的指令碼...
perl指令碼語言學習
來公司的第二個星期便看了一下perl語言,發現掌握一門指令碼語言還是非常有用的。到現在為止已經入職兩個月,用perl指令碼做了這些活 1.修改了公司的乙個爬取網頁源 的指令碼 2.改進了乙個出特徵庫的指令碼,根據svn status的狀態,來優化,將只需要新增的db的資料進行處理。3.編寫了乙個指令...