TCL基础教程——(2)输出和变量
在linux下,可以执行tclsh来进入tcl的编译环境,你将看到一个%的提示符,表示你现在正在tcl的环境中,windows下也类似。
[ppcorn@localhost ppcorn]$ tclsh
%
TCL的Hello world
和所有的程序一样,我们的第一个程序也是从Hello World并输出开始,首先看看命令行格式下的Hello world
%puts “Hello world”
Hello world
当然,这个仅仅是命令行格式的,作为一个真正的程序,我们不能这么写。
第一个程序:l
#!/usr/bin/tclsh
puts "Hello world"
用文本编辑器写下该文件,可以保存在任何目录,当然,最好是本人的工作目录,记得使用chmod+l命令给于该文件执行权限,然后使用./l执行就可以看到和上面相同的结果了。
[ppcorn@localhost ppcorn]$ ./l
Hello world
对于任何的tcl文件,第一行必须是类似于#!/usr/bin/tclsh的,指定了脚本语言编译器的位置,
这个和perl,sh等脚本语言是完全一致的。
puts是TCL中的标准输出函数,任何输出都使用puts来完成。
可以把字符窜写在双引号””中间,也可以写在大括号{}之间,puts都会输出整个字符窜,对于””和{}的不同,等一会说明。
程序和运行结果如下
[ppcorn@localhost ppcorn]$ l
#!/usr/bin/tclsh
puts {Hello world}
[ppcorn@localhost ppcorn]$ ./l
Hello world
TCL中的变量
在TCL中,只有一种变量类型,也就是说,这种变量既可以表示数字,右可以表示字符窜,还可以表示数组,等等等等,对于在TCL中使用变量,直接使用如下格式
set 变量名 值
如下面的程序
[ppcorn@localhost ppcorn]$ l
#!/usr/bin/tclsh
set var1 "Hello world"
puts $var1
[ppcorn@localhost ppcorn]$ ./l
Hello world
可以看出,在定义变量的时候,不需要使用$,而在使用该变量的时候,则需要$。
下面看第二个程序
[ppcorn@localhost ppcorn]$ l
#!/usr/bin/tclsh
set var1 "Hello world"
puts "$var1"
puts {$var1}
[ppcorn@localhost ppcorn]$ ./l
Hello world
$var1
第一输出行,我们把变量放在””之间,输出的是变量的值,第二输出行,我们把变量放在{}之间,输出的是变量名本身,这就是上面谈到的使用””和{}之间的不同,{}会把里面的内容原封不动的输出,而””会进行变量的替换。
同时,我们也可以看到,使用puts进行输出以后,是换行的,如果想要输出后不换行的话,怎么处理呢?
使用-nonewline参数,如
[ppcorn@localhost ppcorn]$ l
#!/usr/bin/tclsh
set var1 "Hello world"
puts -nonewline "$var1"
puts {$var1}
[ppcorn@localhost ppcorn]$ ./l
Hello world$var1
既然使用set来进行变量的定义,那么unset用来做什么呢?对,用来取消变量的定义。如果在把l进行修改,可以看到结果。
[ppcorn@localhost ppcorn]$ l
#!/usr/bin/tclsh
set var1 "Hello world"
puts $var1
unset var1
puts $var1
[ppcorn@localhost ppcorn]$ ./l
Hello world
can't read "var1": no such variable
while executing
"puts $var1
"
(file "./l" line 5)
可以看到在使用了unset以后,var1变量已经不可以访问了,提示没有这个变量。
除了我们定义的变量外,TCL还预定了一些和系统相关的变量,可以直接使用,同时,希望您在定义变量的时候,不要和他们冲突,这些变量是
argc | argv | argv0 | embed_args | env |
tcl_interactive | tcl_library | tcl_patchlevel | tcl_platform | tcl_prompt1 |
tcl_prompt2 | tcl_version | auto_path | auto_index | auto_noload |
auto_noexec | geometry | |||
对于这些预定义变量的用法,在以后接触到的地方再讲。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论