在 Tcl 教程的这一部分中,我们介绍了一些基本的 Tcl 命令。
涵盖的 Tcl 命令包括puts
,open
,gets
,flush
,incr
,info
,set
和unset
命令。
puts
命令
在第一个示例中,我们将提到puts
命令。 puts
命令用于将消息打印到控制台或文件等其他通道。 该命令具有以下语法:
puts ?-nonewline? ?channelId? string
puts
是命令名称。 在问号之间指定了可选参数。
-nonewline
开关禁止换行符。 默认情况下,该命令在每条消息中放置换行符。 channelId
必须是开放通道(例如 Tcl 标准输入通道stdin
)的标识符,该标识符是调用open
或socket
的返回值。 如果未指定,则默认为标准输出通道stdout
。 最后,string
是要打印的消息。
#!/usr/bin/tclsh
puts "This is Tcl tutorial"
puts stdout "This is Tcl tutorial"
puts
命令将消息打印到控制台。 这两个命令调用执行相同的操作。
open
命令
open
命令打开文件,串行端口或命令管道,并返回通道标识符。 在下面的示例中,我们使用命令打开文件。
#!/usr/bin/tclsh
puts [open messages w] "This is Tcl tutorial"
puts
命令用于写入文件,该文件通过open
命令打开以进行写入。
$ cat messages
This is Tcl tutorial
我们将显示由上述 Tcl 脚本创建的消息文件的内容。
gets
和flush
命令
gets
命令从通道读取一条线,flush
命令刷新通道的缓冲输出。 在下面的示例中,我们创建一个向用户打招呼的脚本。
#!/usr/bin/tclsh
puts -nonewline "What is your name? "
flush stdout
gets stdin name
puts "Hello $name"
在此示例中,我们请求用户输入并以自定义问候语打印输入。
puts -nonewline "What is your name? "
-nonewline
选项禁止换行。 提示保持在同一行。
flush stdout
输出被缓冲。 要在命令运行后立即查看输出,我们可以使用flush
命令。 stdout
是标准输出。 在我们的例子中,它是一个终端。 它在 Tcl 中称为频道 ID。
gets stdin name
gets
命令从标准输入读取一行。 结果存储在名称变量中。
puts "Hello $name"
最后,我们向用户致意。
$ ./name.tcl
What is your name? Jan
Hello Jan
运行示例。
incr
命令
incr
递增变量的值。 它具有以下语法:
incr varName ?increment?
如果将参数传递给命令,则将其值添加到变量的值; 否则,该值将增加 1。
#!/usr/bin/tclsh
# incr_cmd.tcl
set x 5
incr x
puts $x
incr x 4
puts $x
该代码示例设置一个变量并将其递增两次。
set x 5
值 5 设置为x
变量。
incr x
puts $x
x
变量增加 1。数字 6 打印到控制台。
incr x 4
puts $x
数字 4 被添加到x
变量中。 puts
命令将 10 打印到控制台。
$ ./incr_cmd.tcl
6
10
这是incr_cmd.tcl
脚本的输出。
info
命令
info
命令返回有关 Tcl 解释器状态的信息。
#!/usr/bin/tclsh
puts [info tclversion]
puts [info host]
puts [info exists var]
info
命令具有多个选项。 我们展示其中的三个。
puts [info tclversion]
在这里,我们打印 Tcl 解释器的版本。
puts [info host]
该行显示主机名。
puts [info exists var]
最后,我们检查变量var
是否设置。
set
和unset
设置命令
set
命令用于创建和读取变量。 unset
命令销毁变量。
#!/usr/bin/tclsh
set x 23
puts $x
puts [set x]
unset x
puts [info exists x]
显示set
和unset
命令的示例。
set x 23
我们创建一个x
变量并为其分配值 23。
puts $x
我们打印x
变量的值。
puts [set x]
此行还打印x
变量的值。 具有一个参数的set
命令读取变量的值。 该值将传递到puts
命令并打印到终端。
unset x
变量x
被破坏。
puts [info exists x]
我们使用info exists
命令验证变量的存在。
命令行参数
像任何其他脚本一样,Tcl 脚本也可以使用命令行参数。 Tcl 具有三个预定义变量。
$argc
- 传递给脚本的参数数量$argv
- 参数列表$argv0
- 脚本名称
#!/usr/bin/tclsh
puts "The script has $argc arguments"
puts "The list of arguments: $argv"
puts "The name of the script is $argv0"
我们在此脚本中使用所有预定义的变量。
$ ./args.tcl 1 2 3
The script has 3 arguments
The list of arguments: 1 2 3
The name of the script is ./args.tcl
运行示例。
本章介绍了 Tcl 语言的一些基础知识。