Tcl:if语句中的多个条件

时间:2017-09-07 22:49:47

标签: tcl

只是尝试在脚本中执行一些基本检查...如果$argc不是1或2,则会产生错误。

我试过了:

if { ( $argc != 1 ) || ( $argc != 2 ) } {
        puts "ERROR: \$argc should be either 1 or 2.\n"; exit 1
}

if { ( $argc != 1 || $argc != 2 ) } {
        puts "ERROR: \$argc should be either 1 or 2.\n"; exit 1
}

但无法使用任何括号/括号组合使其工作。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

这是基本逻辑。

你的例子不会起作用,因为2不等于1所以第一次测试是真的。

要取消OR连接,否定每个测试并将OR更改为AND。 你想要这种状态:

if { ( $argc == 1 ) || ( $argc == 2 ) } {
  puts "ok"
} else {
  puts "ng"
}

所以使用:

if { ( $argc != 1 ) && ( $argc != 2 ) } {
  # i.e. if $argc is either anything other than a 1 or a 2...
  puts "ERROR: \$argc should be either 1 or 2.\n"; exit 1
}

答案 1 :(得分:3)

另一种方式:

if {$argc ni {1 2}} { ... }

即:如果argc的值不在包含1和2的列表中,......

ni运算符需要Tcl 8.5或更高版本。

文档: ifni (operator)