Tcl基础学习(1):简单文本输出(puts)与变量赋值(set)


Tcl是一种解释语言,每条语句被一次解析并立即执行,该语言在脚本遇到错误后会立即停止。

Tcl在其脚本中遵循的基本语义:

  • 每条Tcl语句以换行符/分号 " ; " 结束
  • 如果一条语句跨多行,应在行尾加反斜杠 “\” ,才能在下一行继续执行
  • 每条语句及参数都被视为字符串格式
  • 如果字符串内有多个单词,使用双引号 “” 和大括号{}包括成一个单独的单元
  • 有空格分隔的多个单词则被认为是命令的多个参数(每个参数相当于一个单元)
  • 以“#”开头的语句认为是Tcl的注释

puts:输出字符串的命令

1.
#This is a comment befor the command
puts "hello,world!”;#This is a comment afer the command

hello,world!

2.
puts "hello,world!” #This is a comment afer the command

wrong # args: should be "puts ?-nonewline? ?channalID? string"

3.
puts {hello,world! -1}

hello,world! -1

4.
puts  hello world!;

cannot find a channal named 'hello'

set:Tcl赋值命令

当set赋予两个参数进行调用时:set varName ?value?

  1. 如果value被指定,变量varName的内容被设置为Value
  2. 如果varName只包含字母字符,没有圆括号那它就是标量变量
  3. 如果varName中有varName(index)的形式,那它及时关联数组的元素    获取数组中 的索引值:array names varName  返回值:index
set abc "123";#变量abc赋值为123
123
set def(1) 123;#def为数组变量,1为索引,123为数组变量def(1)的赋值
123
set def(test) 123;#def为数组变量,test为索引(索引可以为字符),123为数组变量def(1)的赋值
123
array names def;# array names 获取数组def中的索引值
test 1

当需要使用puts对变量进行求值时,需要 使用美元符号 $ 

set a 15;#a为变量名,15为变量的值
puts $a;#打印a的值

15

符号 $的使用

  • $在变量求值时有特殊含义,在想要使用对$打印时,必须在前面加上反斜杠"\"
  • 在使用$对变量求值时,不能放在大括号内 例如:puts {Value is $a}; #命令无效
  • 在大括号内使用$只有一种情况,即对表达式进行计算时  eg:expr $x+2;  expr{$x+2};

相关