T腳本語言學習記錄-工具(一)

一、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

二、$ & []編程

 

 1 %set foo oo
 2 =>oo
 3 %set dollar foo
 4 =>foo
 5 %set x $$dollar
 6 =>$foo ;#只解釋一次,將「 $dollar」用 dollar 的值( foo)代替,
 7 ;#命令等效爲 set x {$foo},大括阻止替換。
 8 % set x {$foo}
 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

 

三、" " & { }app

雙引號和花括號將多個單詞組織成一個參數,也是一種替換操做。若是花括號是用作替換操做,則它會阻止內部的嵌套替換,若是花括號用作界限符,如過程定義時用作界限過程體時,不阻止替換操做,其餘還有 if 條件語句、循環語句、 switch 語句和過程聲明、數學表達式等。spa

%set s hello
=>hello
%puts stdout "The length of \"$s \"is [string length $s]" ;# 「string length」 命令是計算
6
Tcl 編程初步
;#字符串長度,用反斜槓」\」來引用特殊字符。
=>The length of hello is 5
%puts stdout {The length of $s is [string length $s]}
=>The length of $s is [string length $s] ;#替換操做被阻止
%set x 10
=>10
(bin) 35 % set y 20
=>20
(bin) 36 % set z [expr {$x + $y}] ;#expr 表示進行數學運算,要用[]括起來
=>30 ;#用{}來組織算術表達式,不阻止$替換操做
% if { $x == 10} { puts 「x=$x」}
=> x=10 ;#在條件語句中, {}用來界定條件體和執行體,不阻止內部替換

 

四、 \code

% 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

 

五、incrregexp

incr 命令根據指定的步長來增長或減小參數的值。當步長爲負時,減小參數值;當步長爲正
時,增長參數值。默認步長爲+1。orm

%set a 10 ; incr a
=>a=11
%set a 10 ; incr a –1
=> a=9

 

六、基本命令集blog

命令                                                                                描述
append                                                                           將值追加到字符串尾
binary                                                                             二進制字符串操做
format                                                                             字符串格式化
regexp                                                                            正則表達式(用於字符串模式匹配)
regsub                                                                             用正則表達式進行字符串模式匹配和替換
scan                                                                                字符串分解
string options                                                                  字符串操做和命令集
subst                                                                             字符替代(替代特殊字符)字符串

  • append 
    %set var1 Hello
    %set var2 World
    %append var1 $var2
    =>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 字符, 4041 分別對應」(「和」)」
    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" {%[a-z]} res
    => 1
    % puts $res
    => abc
    % scan "ABCabc" {%[A-b]} res
    => 1
    % puts $res
    => ABCab
    % scan "ABCab" {%[^a-b]} res
    =>1 ;#匹配非 a 到 b 的字符
    % puts $res
    =>ABC
    % scan ABCab {%2[^a-b]} 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=$a sum=[expr 1 + 2]}
    => a=foo bar sum=3
    % subst { a={$a} sum={[expr 1 + 2]}}
    => a={foo bar} sum={3} ;#數據內部的花括號不阻止替換
相關文章
相關標籤/搜索