2 Tcl输出、赋值与替换

2.1 puts

Tcl的输出命令是puts,将字符串标准输出channelled。语法中两个问号之间的参数为可选参数。

# 例1
puts hello # 输出
hello # 例2
puts -nonewline "hello hello" # 输出
hello hello
  • 如果输出一段有空格的文本,则要用双引号("")或花括号({})起来。
  • -nonewwhile选项告诉puts不输出回车换行

    注意:双引号和花括号的作用是将多个词组织成一个变元,但是""和{}是由区别的。""在进行替换操作的时候,前者允许替换操作发生;{}会阻止替换。

2.2 set

set varName [value]
unset vaName
  • set:变量定义和赋值命令,不必制定变量值得类型,因为变量值得类型只有一种--字符串。在为变量进行赋值的时候,会为变量开辟一段内存空间来存储变量值
  • set VarName不跟变量的值,如果变量已经定义,则返回变量的值,效果和puts相同;变量不存在会返回错误信息。相当于查询的作用。
  • unset与set的作用相反,它取消变量的定义,并释放变量所占的内存空间
  • 通过前置的“$”符,可以引用变量的值(替换)。
set a Hello       # 定义变量a并为其赋值
puts $a # a=Hello set a "Test Tcl" # 重新给a赋值
set a # 输出Test Tcl puts a # 输出字符a set b $a # 定义变量b,并将a的值赋值给b b=Test Tcl
puts $b # b = Test Tcl unset a # 释放变量 puts $a # 试图输出未定义的变量值,会进行输出
  • puts $a由两步完成:首先用a的值替换$a,替换后的命令变为puts {Test Tcl},然后输出字符串。也就是说先替换后输出
  • 数组定义在后面进行介绍。

2.3 替换

2.3.1 $

$实现引用替换,用来引用参数值。

tcl在使用$进行引用替换的时候,只会进行一次解释,嵌套使用$$xxxx,只有一个起作用。

set foo oo
set dollar foo set x $$dollar # x = $foo set y {$foo} # y = $foo {}阻止替换 set z $x # z = $foo
  • $$dollar,将$dollar用dollar的值foo进行替换,前面的$不起作用,作用字符输出。

2.3.2 []

方括号[]书写完整的命令替换,[]中的执行后,返回结果。

set b [set a 5]        # set a 5命令输出的结果赋值给b b=5
puts b # b = 5 set c [expr 5*10] # 将乘式的结果赋值给c
puts c # c = 50

2.3.3 ""和{}

""和{}将多个单词阻止在一起组成一个参数,也是一种替换操作。一般在""内进行正常替换,在{}中的替换可能被阻止当{}用于组织算数表达式、if条件和函数内执行体的代码块的时候,不会阻止替换。

set s hello

puts stdout "The length of\"$s\" is [string length $s]"

=>The length of hello is 5

#  ""内再使用双引号的时候要使用转义字符。
# string length $s 计算字符串s的字符串长度 puts stdout {The length of $s is [string length $s]} # 替换操作被阻止
=>The length of $s is [string length $s] set x 10
set y 20
set z [expr{$x + $y}]
=>30 if{$x == 10} {puts "x = $x"}
=>x=10
  • expr表示进行数学运算,要用[]括起来
  • 用{}来组织算数运算表达式,不阻止$替换操作
  • 在条件语句中,用{}来界定条件体和执行体,不阻止内部的替换

2.3.4 \

反斜杠“\”的作用是引用特殊字符或者续行

应用特殊字符的操作是告诉TCl解释器需要使用一些特殊的字符,如$符或者完成特定功能比如\n,\t,\b.....,相当于转义字符的作用。

如果一条语句过长,可以使用“\”,将一行语句分为多行进行书写。

set x 100
set y $x # y = 100 set z "\$x" # z = $x \$表示告诉tcl使用$符号 puts "he \nllo" # \n换行
=>he
llo puts "\a" # 振铃 set b [puts \
$y]

注意:当用set命令为参数,赋值,并""用作续行符的时候,不要在反斜杠后面同一行上输入任何符号,包括空格和制表符。否则反斜杠(\)就起不到续行的功能,容易引起错误。

最新文章

  1. MongoDB GridFS 对图片进行增删改
  2. Android之输入框光标和Hint的位置
  3. spring+mybatis事务管理
  4. 微信小程序初体验(上)
  5. 将slider滑块从横着变为竖着的时候坐标变换的计算
  6. vb.net 使用 Regex Replace 正则 替换 Html字串的table中tbody第一个tr下的td为th
  7. 让asp.net web api同时支持[AcceptVerbs("GET","POST")]
  8. Android-操作栏之副标题
  9. Struts2 标签库详解2
  10. 【shell脚本实例】一个恶作剧—— kill掉占用CPU较高的matlab进程
  11. Ubuntu 发行版的 Linux 操作系统
  12. Laravel框架中Form表单Get请求搜索(在此感谢[https://simon8.com])
  13. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'smvch'
  14. FORM开发两种方式实现动态LIST
  15. PriorityQueue 源码分析
  16. JS类小功能
  17. 【转】安全加密(三):RFID标签防伪为生活开启安全模式
  18. My thoughts after NOIP 2018(1)
  19. Composer 的学习
  20. AIX修改时区,配置NTP服务

热门文章

  1. 齐博x1服务器性能太差,调整系统升级每次校验的文件数
  2. 《Java并发编程的艺术》读书笔记:一、并发编程的目的与挑战
  3. iptables介绍和基本使用
  4. 四、redis数据类型
  5. vulnhub靶场之ICA: 1
  6. Python基础部分:5、 python语法之变量与常量
  7. Burpsuite系列1--自动扫描
  8. redisson分布式锁原理剖析
  9. 【Devexpres】spreadsheetControl设置可见范围
  10. 树莓派蓝牙rfcomm协议通信