2

有人可以解释为什么这一直失败吗?

set hostname ""

if {$hostname eq ""} {
   puts "Usage: host [-u username] [-p password] [-f]"
   exit 5
}

if {[string length $hostname] == 0} {
   puts "Usage: host [-u username] [-p password] [-f]"
   exit 5
}

 if {[string equal $hostname ""]} {
   puts "Usage: host [-u username] [-p password] [-f]"
   exit 5
}

我收到以下错误:

invalid command name "-u"
    while executing
"-u username"
    invoked from within
"if {$s eq ""} {puts "Usage: host [-u username] [-p password] [-f]"}"

代码似乎执行得很好,但我似乎无法将 puts 与包含大括号的字符串一起使用。

4

2 回答 2

8

双引号字符串内的方括号表示评估。尝试使用反斜杠转义方括号。

于 2013-07-15T04:31:15.513 回答
7

另一种方法是对打印的字符串使用不同的引号:

puts {Usage: host [-u username] [-p password] [-f]}

大括号的作用类似于 shell 的单引号:它们防止在大括号引用的字符串中进行替换。

您可能还想花一些时间研究 Tcl 的 12 条语法规则:
http ://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm

于 2013-07-15T10:29:38.453 回答