TCL基础教程——(2)输出和变量   
linux下,可以执行tclsh来进入tcl的编译环境,你将看到一个%的提示符,表示你现在正在tcl的环境中,windows下也类似。
    [ppcorn@localhost ppcorn]$ tclsh
%
    TCLHello 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的,指定了脚本语言编译器的位置,
这个和perlsh等脚本语言是完全一致的。
putsTCL中的标准输出函数,任何输出都使用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小时内删除。