TCL語言筆記:TCL基礎語法


一、什么是TCL

Tcl 全稱是 Tool command Language。它是一個基於字符串的命令語言,基礎結構和語法非常簡單,易於學習和掌握。

Tcl 語言是一個解釋性語言,所謂解釋性是指不象其他高級語言需要通過編譯和聯結,它象其他 shell 語言一樣,直接對每條語句順次解釋執行。

Tcl 數據類型簡單。對 Tcl 來說,它要處理的數據只有一種——字符串。Tcl 將變量值以字符串的形式進行存儲,不關心它的實際使用類型。

二、TCL的基本語法

1.輸出:tcl使用”puts"關鍵字來作為輸出語句

[語法] : puts ?-nonewline? ?channelId? string 

Tcl 的輸出命令是“puts”,將字符串輸出到標准輸出 channelId。語法中兩個問號之間的參數為可選參數。

puts hello 
結果=> hello 

puts –nonewline  "hello hello" 
結果=>hello hello

但如果輸出一段有空格的文本,則要用雙引號或者花括號括起來

-nonewline 選項告訴 puts 不輸出回車換行。

注意:雙引號和花括號的作用是將多個詞組織成一個變元,但他們是有差別的!這種差別就是在處理“替換操作”時,前者允許替換發生,而后者則可能會阻止替換。關於兩者用法與差別以后會陸續講到。在這里兩者作用相同。

2.賦值: tcl 使用“set”關鍵字來定義參數,不必指定變量值的類型,因為變量值的類型僅一種——字符串。為變量賦值時,會為變量開辟一段內存空間來存儲變量值。

[語法] set varName [value]  

set a Hello        ;#定義變量 a 並賦值 
=>Hello 
puts $a          ;#輸出變量值 
=>Hello 
set a  “Hello world”  ;#重新賦值 
=>Hello world
set a   “Hello world”            
=> Test Tcl     ;#輸出變量值,此時不加”$” 

puts $a         
=>Hello world     ;#輸出變量值,此時要加”$” 

puts a              
=> a     ;#輸出字符”a” 

set b $a           
=>Hello world 

puts $b 
=>Hello world         ;#將 a 的值賦給 b 

3.替換

(1):$

“$”符實現引用替換,用以引用參數值。上面也用到過

Tcl 對替換只進行一遍解釋,對嵌套的”$”不於理睬。

set foo  oo 
=>oo 
set dollar foo 
=>foo 
set x $$dollar 
=>$foo           ;#只解釋一次,將“$dollar”用 dollar 的值(foo)代替, ;#命令等效為 set x {$foo},大括阻止替換。 
set x {$foo}   
=>$foo            
set y $x 
=>$foo           ; #一輪替換 

(2) :[]

方括號“[]”完成命令替換。用“[]”將一條命令括起來,命令執行完成后,返回結果。

set b [set a   5]                  ;#set a 5 命令輸出的結果賦給 b 
=>5 

puts $b 
=>5 

set c [expr 5 * 10]                 ;#將乘式結果賦給 c 
=>50 

(3): " " 和{} 

雙引號和花括號將多個單詞組織成一個參數,也是一種替換操作。””和{}內的替換如何進行

呢?一般的原則是在" "內的替換正常進行,而在{}內的替換有可能會被阻止。

set a 123
=>123 

puts "$a"         #會替換
=>123

puts {$a}          #不會替換
=>$a

 

三、總結

TCL語言的執行順序是:先分組,再替換,最后執行

 

花括號中不准替換
雙引號和花括號的作用都是分組,但是不同之處在於是否支持替換
語句的運行分3步走:
1、首先分組
2、其次替換
3、最后運行

$的作用是變量引導符,在字符串中如果要替換某個變量,可能還需要用{}來界定變量的起始和終點
分組有三種方法:空格,雙引號和花括號
另外轉義符\在這里的作用是提升或者消除字符的能力

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM