为什么HTCondor提交描述中这种ProcId转int的写法不生效
HTCondor提交描述脚本异常原因说明
两个核心问题导致修改后的写法无法运行:
$INT()函数的求值时机不符合动态变量的赋值逻辑
HTCondor提交描述文件的$INT()属于即时求值的宏格式化函数,会在提交文件解析阶段就完成计算。而$(ProcId)是任务调度阶段才会给每个实例分配的动态ID,提交阶段尚未赋值,因此n = $INT($(ProcId) + 1)这行在提交时就会因为ProcId未定义无法完成求值,变量n本身的定义就是无效的。
原写法中n = $(ProcId) + 1只是存储了表达式,$INT(n)放在arguments字段中会推迟到每个任务实例生成时再求值,刚好能拿到已经分配好的ProcId值,因此可以正常运行。- 变量引用语法不符合HTCondor规则
HTCondor提交描述文件引用自定义变量的标准语法是$(变量名),不支持Shell风格的${变量名}大括号写法。修改后的写法中arguments = read_${n}.fa里的${n}会被识别为普通字符串,不会展开为变量n的值,直接导致参数格式错误。
内容的提问来源于stack exchange,提问作者Caterina
相关产品推荐
相关产品推荐

