如何循环参数列表并提交作业?

时间:2014-07-08 09:56:02

标签: bash qsub do-loops

我有一个有输入的作业,我想在提交作业时循环参数列表。这是我的脚本的一部分:

#!/bin/bash
errors=$HOME/ERRORS/convergence/GvsE/B_2/error.log
count=`qstat | wc -l`
gi=( "0" "0.25" "0.5" "1" "2" )
Ener=( "1" "2" "5" "10" "20" "21" "22" "23" "24" "25" )

for ((i=0; i < ${#g[@]}; i++)); do
        for ((j=0; j < ${#E[@]}; j++)); do
                qsub -o $errors -e $errors -v E=${#Ener[$j]},slices=${200},modes=${60},g=${#gi[$i]} job_convcheck.sh
                count=`expr $count + 1`
                while [ $count -gt 4950 ]
                do
                  sleep 420
                  count=`qstat | wc -l`
                done
        done
done

当我跑步时,我既不会得到答案也不会得到结果。这有什么问题?

1 个答案:

答案 0 :(得分:0)

可能显而易见的是

for ((i=0; i < ${#g[@]}; i++)); do

应该是

for ((i=0; i < ${#gi[@]}; i++)); do

for ((j=0; j < ${#E[@]}; j++)); do

应该是

for ((j=0; j < ${#Ener[@]}; j++)); do

如果您希望索引完成:

for i in "${!gi[@]}"; do
    for j in "${!Ener[@]}"; do