相关阅读
Tcl语言https://blog.csdn.net/weixin_45791458/category_12488978.html?spm=1001.2014.3001.5482
Tcl中的大括号
大括号{}可以使得被其包围的所有内容被解释为字面量,所以不会进行命令替换,转义符替换(大部分情况的转义)、变量替换等一系列替换;大括号中的空格不会被解析成参数分隔符,大括号中的换行符也不表示执行命令,只是一个普通的换行符。
set a 1
set b {a is $a}
puts $b
a is $a //变量替换不进行
puts {Hello\nWorld}
Hello\nWorld //转义符替换不进行
puts {[expr 1+1]}
[expr 1+1] //命令替换不进行
puts {Hello\
World}
Hello World //少数情况下,转义符能正常转义,被转义的换行符会变成空格
set a {HelloWorld\}
missing close-brace //报错,因为\转义了右大括号
Tcl中的双引号
双引号""会使得被其包围的所有内容进行命令替换,转义符替换(转义)、变量替换等一系列替换;大括号中的空格不会被解析成参数分隔符,大括号中的换行符也不表示执行命令,只是一个普通的换行符。
set a 1
set b "a is $a"
puts $b
a is 1 //变量替换会进行
puts "Hello\nWorld"
Hello
World //转义符替换会进行
puts "[expr 1+1]"
2 //命令替换会进行
puts {Hello\
World}
Hello World //换行符被正常转义
set a "HelloWorld\"
missing " //报错,因为\转义了右双引号