ifdef相当于TCL

时间:2014-11-24 22:23:59

标签: bash shell tcl

在TCL中,是否有一个优雅的实现,它将模仿编程语言中经常使用的ifdef。从TCL脚本语言本身来看,我无法找到TCL解释器原生支持的方式。

3 个答案:

答案 0 :(得分:5)

除了标准" if"之外,Tcl中没有任何东西等同于" ifdef"声明。如果你不喜欢标准"如果"声明,tcl为您提供了创建自己的所有基本构建块" ifdef"命令。

例如,ifdef实际上只是一个查找定义值的if语句。一个非常简单的实现可能看起来像这样:

proc define {name value} {
    set ::defined($name) $value
}

proc ifdef {name script1 else script2} {
    if {[info exists ::defined($name)]} {
        uplevel $script1
    } else {
        uplevel $script2
    }
}

然后您可以像这样使用它:

define FOO 1
...
ifdef FOO {
    <do this if FOO is defined>
} else {
    <do this if FOO is NOT defined>
}

答案 1 :(得分:4)

如果您尝试检查环境变量,可以执行以下操作:

if {[info exists ::env(PROJ_FOO)]} {
   set_lib x
} else {
   set_lib y
}

假设您有一些名为set_lib的Tcl命令。

答案 2 :(得分:0)

看一下[info exists varName]和类似的东西。例如:

如果{![info exists myVar]} {puts&#34; myVar未定义,请在此处定义&#34;}

多点打字,但很明显发生了什么,可以用于任何信息可以检查。