我正在尝试向 SGE(FWIW,它是一系列 Gromacs 分子动力学模拟)提交(一系列)作业,其中所有作业都是相同的,除了后缀,例如input01
,input02
等。我将命令写入以命令序列正确处理后缀的方式运行。
但是,我找不到让 exec 环境接收该变量的方法。根据qsub
手册页,-v var
应该这样做。
$ export i=19
$ export | grep ' i='
declare -x i="19"
$ env | grep '^i='
i=19
然后,我提交以下脚本 ( run.sh
) 以查看是否收到:
if [ "x" == "x$i" ]; then
echo "ERROR: \$i not set"
else
echo "SUCCESS: \$i is set"
fi
我按如下方式提交作业(在与上述export
命令相同的会话中):
$ qsub -N "test_env" -cwd -v i run.sh
Your job 4606 ("test_env") has been submitted
错误流为空,输出流有:
$ cat test_env.o4606
ERROR: $i not set
我还尝试了以下命令,但未成功:
$ qsub -N "test_env" -cwd -v i -V run.sh
$ qsub -N "test_env" -cwd -V run.sh
$ qsub -N "test_env" -cwd -v i=19 -V run.sh
$ qsub -N "test_env" -cwd -v i=19 run.sh
如果我i=19
在开头添加一行run.sh
,则输出为:
$ cat test_env.o4613
SUCCESS: $i is set as 19
我现在正在考虑为每个作业生成一个文件,这基本上是相同的,但将有i=xx
一行作为第一个。它看起来不太实用,但它会是一个解决方案。
会有更好的解决方案吗?