0

我有一个 tcl 脚本,它是 IBM 负载共享设备 (lsf) 中的一个模块文件,用于配置一些环境变量并使用exec命令启动 python 脚本。

当模块正常卸载时,所有命令都运行相反,但exec命令也正常运行。我希望exec它只运行在module load而不是运行module unload

这是我到目前为止尝试过的

if { !(is-loaded mymodule)} {
    exec .venv/bin/python mypython.py
}

我也试过这个

if { module-info command load } {
    exec .venv/bin/python mypython.py
}

对于每一个我都会遇到类似的错误

Module ERROR: invalid bareword "module"
in expression " module-info command [load] ";
should be "$module" or "{module}" or "module(...)" or ...

这两个例外都抱怨无效的裸词(“is”或“module”),具体取决于我尝试的片段。我的语法无效吗?

4

1 回答 1

0

我的语法不正确,最后我能够通过以下方式解决问题:

set is_load_command [module-info command load]

if { $is_load_command == 1 } {
    exec .venv/bin/python mypython.py
}

我有两个问题,正确理解 tcl 中的比较和使用来自被调用函数的返回值。两者都没有真正表现出我习惯的样子。

于 2021-10-29T14:02:05.613 回答