目录
除了反斜线,Tcl还提供了两种方法,使得解释器把空白符和置换符等特殊字符作为普通字符处理。就是双引号" "和花括号{ }
1 Tcl双引号引用
如果一个单词的第一个字符是 " 则这个单词由另一个 " 结束。换句话说,这两个双引号之间相当于一个单元。注意这个时候双引号不属于该单词的一部分。
#Tcl解释器将取消双引号中空白符、换行(注意不是换行符)、分号的特殊含义。
puts "Hello Tcl"
#输出结果是,Hello Tcl 对空格作为普通处理。
set Price "Eggs: \$2.5/dozen
Coke: \$0.5/bottle"
puts $Price
#输出结果如下:对换行作为普通处理。
Eggs: $2.5/dozen
Coke: $0.5/bottle
#但是对于换行符、$、[]仍以特殊符号对待。
set price "Eggs: \$2.5/dozen\nCoke: \$0.5/bottle"
puts $price
#输出结果如下:对\n仍特殊对待。
Eggs: $2.5/dozen
Coke: $0.5/bottle
set y 2
set a "y is $y; the square of y is [expr $y*$y]"
puts $a
#输出结果为:对空白符和分号作为普通处理,对[]和$仍特殊对待。
y is 2; the square of y is 4
2 Tcl花括号引用
如果一个单词的第一个字符是 { 则这个单词由与之匹配的 } 结束。换句话说,这两个花括号之间相当于一个单元。注意这个时候花括号不属于该单词的一部分。
#取消所有特殊字符的特殊意义。
set Price {Eggs: \$2.5/dozen
Coke: \$0.5/bottle}
puts $Price
#输出结果是:
Eggs: \$2.5/dozen
Coke: \$0.5/bottle
set price {Eggs: \$2.5/dozen\nCoke: \$0.5/bottle}
puts $price
#输出结果是:\n被作为普通字符处理。
Eggs: \$2.5/dozen\nCoke: \$0.5/bottle
3 Tcl反斜线-换行序列
- 花括号中的空格相当于普通字符。而没有花括号时,则是单词间隔符。这一点可以从输出结果可以看出
- 反斜线+换行+第二行前面的空白=一个空格字符。换句话说,起到了续行的作用,相当于一条命令。
- 反斜线+空格+换行=空格字符+换行。则起不到续行的效果,因此没有花括号时相当于两条命令,会报错;有花括号时,按照普通字符处理。
#反斜线+换行+第二行前面的空白=一个空格符,这样两行就组成了一条命令相当于set c 200
set a \
200
puts "The value of a is:$a"
#输出结果为:这里200前面没有空格
The value of a is:200
#反斜线+空格+换行=空格符+换行,这样会报错,相当于两条命令
set b \
200
puts "The value of b is:$b"
#如果我们将其用大括号括起来,反斜线+换行+第二行前面的空白=一个空格符
#这也是唯一能在大括号里面执行的替换操作,我们称为反斜线-换行序列。
set c { \
200 }
puts "The value of c is:$c"
#输出结果为:(花括号到反斜线之间的空格符和200)替换了($c)
The value of c is: 200
#如果反斜线+空格+换行符=空格符+换行符
set d { \
100 }
puts "The value of d is:$d"
#输出结果为:
The value of d is: \
100