有人可以解释为什么这会一直失败吗?
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
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
invalid command name "-u"
while executing
"-u username"
invoked from within
"if {$s eq ""} {puts "Usage: host [-u username] [-p password] [-f]"}"
Run Code Online (Sandbox Code Playgroud)
代码似乎执行正常,但我似乎无法使用包含大括号的字符串.
小智 8
双引号字符串中的方括号表示评估.尝试使用反斜杠转义方括号.
另一种方法是为您打印的字符串使用不同的引号:
puts {Usage: host [-u username] [-p password] [-f]}
Run Code Online (Sandbox Code Playgroud)
大括号的行为类似于shell的单引号:它们阻止括号引用的字符串中的替换.
您可能还想花一些时间研究Tcl的12种语法规则:http:
//www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm