代码之家  ›  专栏  ›  技术社区  ›  david.perez

如何在bash中用空格扩展变量

  •  0
  • david.perez  · 技术社区  · 9 月前

    我想打电话 kubectl run 允许使用以下语法指定环境值: --env=nameOfVar=valueOfVar .

    我有这样的结构:

    env=()
    for v in var1 var2 var2; do
      env+="--env=$v=${!v}"
    done
    kubectl run mycontainer "${env[@]}"
    

    通过这种方式,我可以将现有变量的值传递给kubectl。

    它工作正常,除非var的值包含空格。

    如何将参数正确分隔为 kubectl ?

    我尝试过其他变体,比如:

    env=
    for v in var1 var2 var2; do
      env="$env --env=$v=${!v}"
    done
    kubectl run mycontainer "$env"
    

    Suposing var1 具有值 value 1 等等,我希望得到这样的结果:

    kubectl run mycontainer "--env=var1=value 1" "--env=var2=value 2" "--env=var3=value 3"
    

    而不是这样:

    kubectl run mycontainer --env=var1=value 1 --env=var2=value 2 --env=var3=value 3
    
    1 回复  |  直到 9 月前
        1
  •  4
  •   oguz ismail FCulig    9 月前

    将元素附加到数组的正确语法如下:

    env=()
    for v in var1 var2 var2; do
      env+=("--env=$v=${!v}")
    done
    kubectl run mycontainer "${env[@]}"