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

Bash 如何循环参数列表并提交作业?,bash,qsub,do-loops,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++)); d

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

#!/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
#/bin/bash
errors=$HOME/errors/convergence/GvsE/B_2/error.log
计数=`qstat | wc-l`
gi=(“0”“0.25”“0.5”“1”“2”)
能量=(“1”“2”“5”“10”“20”“21”“22”“23”“24”“25”)
对于((i=0;i<${g[@]};i++);做
对于((j=0;j<${#E[@]};j++);做
qsub-o$errors-e$errors-ve=${Ener[$j]},slice=${200},modes=${60},g=${gi[$i]}job\u convcheck.sh
count=`expr$count+1`
而[$count-gt 4950]
做
睡眠420
计数=`qstat | wc-l`
完成
完成
完成

当我运行这个时,我既没有得到答案,也没有得到结果。这有什么不对?

很可能最明显的是

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