Bash 在执行时解析循环变量

Bash 在执行时解析循环变量,bash,for-loop,case,nested-loops,Bash,For Loop,Case,Nested Loops,我有以下循环: for a in var1 var2; do direst=$theDir/$a cd $direst case $a in var1) theUsrs=$VAR1usrs csvFile="$theDate"__"$b"_.csv sleep 5s ;; var2) theUsrs=$VAR2usrs

我有以下循环:

for a in var1 var2;
do
    direst=$theDir/$a
    cd $direst
    case $a in
    var1)
            theUsrs=$VAR1usrs
            csvFile="$theDate"__"$b"_.csv
            sleep 5s
            ;;
    var2)
            theUsrs=$VAR2usrs
            csvFile="$theDate"_$(echo $b |awk -F, '{print $1}')__$(echo $b |awk -F, '{print $2}')_.csv
            sleep 5s
            ;;
    esac
    for b in $theUsrs;
    do
            echo " "
            echo $b $a $direst $csvFile
            sleep 2s
            cd $direst
            if [[ ! -f $csvFile ]];
            then
                    missingUsr=$b
                    echo "$csvFile is missing, creating empty file"
                    createMissing"$a"File
            fi
            cd $direst
            gzip -v $csvFile
            echo "Uploading $csvFile to New Edge"
            uploadFile
    done
done
exit
(uploadFile和createMissing“$a”文件是我以前创建的函数)

现在,正如我在这里看到的,我需要为每个变量创建两个不同的循环,这仅仅是因为在循环开始之前无法解析
$b
(这是我脚本中的第二个循环变量),所以我需要分别为每个变量确定
$csvFile

我也不能将case语句嵌套在第二个循环中,因为还没有确定
$theUsers


是否有一种方法可以使
$csvFile
中的
$b
仅在第二个循环开始时进行解析(就像批处理中的EnableDelayedExpantion一样)?

理解脚本时缺少一些东西。提供dir、$VAR1usrs、$VAR2usrs的示例值。看起来这里有一个逻辑循环。在$a的代码中需要$b,但是$b依赖于$a循环中的代码。。。?如果您解释您试图做什么,我们可能会找到一种摆脱这种逻辑的方法。或者在一个函数中拆分$b循环,并在$a的case语句中的
theUsrs=$VAR1usrs
行之后调用它,将所需的值作为参数传递给它。实际上,$VAR1和$VAR2 usrs的值并不重要(只是两个不同服务的用户列表,我需要为每个用户上传一个csv文件并创建缺少的文件),以及$theDir的值,这正是我用来存储这些文件的目录(每个VAR都有一个自己文件的目录)。我唯一需要知道的是,我是否可以在运行第二个循环之前确定$csvFile的不完整值,该值包含$b(第二个循环变量)的值,并仅在调用$csvFile时对其进行解析。