我有一个tcl脚本,它是IBM Load Sharing Facitily (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")。我的snytax是无效的吗?
发布于 2021-10-29 14:02:06
我的语法是错误的,最终我能够通过以下几点解决这个问题:
set is_load_command [module-info command load]
if { $is_load_command == 1 } {
exec .venv/bin/python mypython.py
}我有两个问题,一是正确理解tcl中的比较,二是使用被调用函数的返回值。这两个人都没有真正表现出我习惯的样子。
https://stackoverflow.com/questions/69769252
复制相似问题