如何在Shell脚本中使变量与附加到另一个变量的变量相等

时间:2018-06-21 14:13:35

标签: bash shell

我正在开发程序,我需要创建一个函数,以针对每个存在的“ VARIANT $ X”执行“ make_anykernel”函数,我正在尝试使用名为VARIANT $ X的变量来完成该任务, X“以值= 1开头,每个周期X = X + 1,以检查下一个VARIANT是否具有值,然后再次执行该函数,问题是变量” VV“的值不为VARIANT $ X,实际上是VARIANT1,VARIANT2,VARIANT3 ...这是我的代码

X=1
bool=true
while [ "$bool" = true ]; do
  export VARIANT=VARIANT$X
  export DEFCONFIG=DEFECONFIG$X
  X=$((X+1))
  VARIANT$X=VV
  if [ "$VV" = "" ]; then
    bool=false
  else
    make_anykernel
  fi
done

很抱歉,如果这是一个愚蠢的问题或疑问,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用variable indirection

#!/usr/bin/env bash

variant1=foo
variant2=bar

i=1
while var=variant$((i++)); [[ ${!var} ]]; do
    echo "The value of $var: ${!var}"
done

答案 1 :(得分:0)

我认为最终您正在寻找${!var}

$ a1="this is a1"; n=1; b=a$n; echo ${!b}
this is a1

顺便说一句,[ "$bool" = true ]是多余的。您可以像下面这样直接使用"$bool"

while "$bool"; do

因为truefalse是返回成功和失败的命令。