我正在使用 qsub
提交 pbs 作业。我的作业文件需要定义 5 个环境变量:qsub -v A=foo,B=bar,C=cat,D=dog,E=qux jobfile.sh
。有时,我可能会在提交时忘记在命令行上定义其中一个变量,只是稍后才发现我的错误。
那么,在使用qsub
提交时,有没有办法捕捉到没有定义所有环境变量的情况?还是我必须承认在提交包含许多必需环境变量的作业文件时必须非常小心?
谢谢,
保罗
最佳答案
您可以做的最好的事情是在 jobfile.sh
的开头添加一个运行时检查,如果没有设置任何预期的变量,它将导致它退出。
set -u
: $A $B $C $D $E
set +u
set -u
告诉 shell 在尝试扩展未设置的参数时退出。 :
命令什么都不做,但它的参数首先进行标准扩展,所以如果这五个参数中的任何一个未设置,shell 就会退出。 set +u
然后禁用对 shell 其余部分的未设置参数检查。
qsub
本身无法检查给定的作业以确定它可能需要哪些变量。
关于bash - 立即发现并非所有环境变量都已在 qsub 命令行上定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345798/