有人可以解释为什么会一直失败吗?
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]"}"
代码似乎执行正常,但我似乎无法使用包含大括号的字符串。
答案 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