T指令碼語言學習記錄 工具(一)

2021-09-25 11:53:12 字數 4638 閱讀 4174

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.編寫了乙個指令...