我有一个tcl脚本,它是IBM Load Sharing facility (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"或"模块"),这取决于我尝试哪个片段。我的snytax无效吗?
我的语法不正确,最后我用下面的命令解决了这个问题:
set is_load_command [module-info command load]
if { $is_load_command == 1 } {
exec .venv/bin/python mypython.py
}
我有两个问题,正确理解tcl中的比较和使用调用函数的返回值。这两个人的行为都不像我习惯的那样。