我正在开发程序,我需要创建一个函数,以针对每个存在的“ 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
很抱歉,如果这是一个愚蠢的问题或疑问,非常感谢您的帮助。
答案 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
因为true
和false
是返回成功和失败的命令。