原文: https://zetcode.com/lang/tcl/basiccommands/

在 Tcl 教程的这一部分中,我们介绍了一些基本的 Tcl 命令。

涵盖的 Tcl 命令包括putsopengetsflushincrinfosetunset命令。

puts命令

在第一个示例中,我们将提到puts命令。 puts命令用于将消息打印到控制台或文件等其他通道。 该命令具有以下语法:

  1. puts ?-nonewline? ?channelId? string

puts是命令名称。 在问号之间指定了可选参数。
-nonewline开关禁止换行符。 默认情况下,该命令在每条消息中放置换行符。 channelId必须是开放通道(例如 Tcl 标准输入通道stdin)的标识符,该标识符是调用opensocket的返回值。 如果未指定,则默认为标准输出通道stdout。 最后,string是要打印的消息。

  1. #!/usr/bin/tclsh
  2. puts "This is Tcl tutorial"
  3. puts stdout "This is Tcl tutorial"

puts命令将消息打印到控制台。 这两个命令调用执行相同的操作。

open命令

open命令打开文件,串行端口或命令管道,并返回通道标识符。 在下面的示例中,我们使用命令打开文件。

  1. #!/usr/bin/tclsh
  2. puts [open messages w] "This is Tcl tutorial"

puts命令用于写入文件,该文件通过open命令打开以进行写入。

  1. $ cat messages
  2. This is Tcl tutorial

我们将显示由上述 Tcl 脚本创建的消息文件的内容。

getsflush命令

gets命令从通道读取一条线,flush命令刷新通道的缓冲输出。 在下面的示例中,我们创建一个向用户打招呼的脚本。

  1. #!/usr/bin/tclsh
  2. puts -nonewline "What is your name? "
  3. flush stdout
  4. gets stdin name
  5. puts "Hello $name"

在此示例中,我们请求用户输入并以自定义问候语打印输入。

  1. puts -nonewline "What is your name? "

-nonewline选项禁止换行。 提示保持在同一行。

  1. flush stdout

输出被缓冲。 要在命令运行后立即查看输出,我们可以使用flush命令。 stdout是标准输出。 在我们的例子中,它是一个终端。 它在 Tcl 中称为频道 ID。

  1. gets stdin name

gets命令从标准输入读取一行。 结果存储在名称变量中。

  1. puts "Hello $name"

最后,我们向用户致意。

  1. $ ./name.tcl
  2. What is your name? Jan
  3. Hello Jan

运行示例。

incr命令

incr递增变量的值。 它具有以下语法:

  1. incr varName ?increment?

如果将参数传递给命令,则将其值添加到变量的值; 否则,该值将增加 1。

  1. #!/usr/bin/tclsh
  2. # incr_cmd.tcl
  3. set x 5
  4. incr x
  5. puts $x
  6. incr x 4
  7. puts $x

该代码示例设置一个变量并将其递增两次。

  1. set x 5

值 5 设置为x变量。

  1. incr x
  2. puts $x

x变量增加 1。数字 6 打印到控制台。

  1. incr x 4
  2. puts $x

数字 4 被添加到x变量中。 puts命令将 10 打印到控制台。

  1. $ ./incr_cmd.tcl
  2. 6
  3. 10

这是incr_cmd.tcl脚本的输出。

info命令

info命令返回有关 Tcl 解释器状态的信息。

  1. #!/usr/bin/tclsh
  2. puts [info tclversion]
  3. puts [info host]
  4. puts [info exists var]

info命令具有多个选项。 我们展示其中的三个。

  1. puts [info tclversion]

在这里,我们打印 Tcl 解释器的版本。

  1. puts [info host]

该行显示主机名。

  1. puts [info exists var]

最后,我们检查变量var是否设置。

setunset设置命令

set命令用于创建和读取变量。 unset命令销毁变量。

  1. #!/usr/bin/tclsh
  2. set x 23
  3. puts $x
  4. puts [set x]
  5. unset x
  6. puts [info exists x]

显示setunset命令的示例。

  1. set x 23

我们创建一个x变量并为其分配值 23。

  1. puts $x

我们打印x变量的值。

  1. puts [set x]

此行还打印x变量的值。 具有一个参数的set命令读取变量的值。 该值将传递到puts命令并打印到终端。

  1. unset x

变量x被破坏。

  1. puts [info exists x]

我们使用info exists命令验证变量的存在。

命令行参数

像任何其他脚本一样,Tcl 脚本也可以使用命令行参数。 Tcl 具有三个预定义变量。

  • $argc - 传递给脚本的参数数量
  • $argv - 参数列表
  • $argv0 - 脚本名称
  1. #!/usr/bin/tclsh
  2. puts "The script has $argc arguments"
  3. puts "The list of arguments: $argv"
  4. puts "The name of the script is $argv0"

我们在此脚本中使用所有预定义的变量。

  1. $ ./args.tcl 1 2 3
  2. The script has 3 arguments
  3. The list of arguments: 1 2 3
  4. The name of the script is ./args.tcl

运行示例。

本章介绍了 Tcl 语言的一些基础知识。