首页 > 解决方案 > 如何在bash中循环嵌套循环而不重复?

问题描述

我正在尝试编写两个循环来一起创建一个函数,因为我需要在一个部署中的两个变量用于 azure,例如存储帐户的名称和容器名称来包含它们的密钥并存储它,但我得到了重复的结果。

    for storage in $(cat $TMP_FILE_STORAGE | sed 's/^[^"]*"\([^"]*\)".*/\1/' )
    do
      echo $storage
      for container in $(cat $TMP_FILE_CONTAINER| sed 's/^[^"]*"\([^"]*\)".*/\1/' )
      do
        echo $container
        continue
      done
    done

这是容器 json 的文件:lama baba

这是用于存储 json 的文件:abdelvt33cpgsa abdelvt44cpgsa

这是我得到的输出 abdelvt33cpgsa lama baba abdelvt44cpgsa lama baba

预期的结果应该是 abdelvt33cpgsa lama abdelvt44cpgsa baba

标签: bash

解决方案


正确的解决方案是在 aray 循环上运行它。

    Potato=$(cat $TMP_FILE_STORAGE)
    Potato1=$(cat $TMP_FILE_CONTAINER)
    eval "array=($Potato)"
    eval "array2=($Potato1)"
    for ((i=0; i<${#array[@]}; i++)); do
    end=`date -d "15 minutes" '+%Y-%m-%dT%H:%MZ'`
    az storage container generate-sas -n ${array2[$i]} --account-name ${array[$i]} --https-only --permissions dlrw --expiry $end -otsv`

      echo "First parameter : ${array[$i]} -- second parameter : ${array2[$i]}"

    done

推荐阅读