为什么放'和'失败?

时间:2013-07-15 04:27:29

标签: tcl

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

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]"}"

代码似乎执行正常,但我似乎无法使用包含大括号的字符串。

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

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

大括号就像shell的单引号一样:它们阻止括号引用的字符串中的替换。

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