在执行时解析循环变量

时间:2018-04-16 11:12:49

标签: 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
            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"文件是我之前创建的函数)

现在,就像我在这里看到的那样,我需要为每个VAR创建2个不同的循环,因为$b(我脚本中的第二个循环变量)在循环开始之前无法解析,所以我需要分别为每个var确定$csvFile

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

有没有办法让$b中的$csvFile仅在第二个循环开始时被解析(就像批量中的EnableDelayedExpantion一样)?

0 个答案:

没有答案