变量 - 并集

变量 - 并集
FICH10=primero.sh
FICH20=segundo.sh

for i in 10 20
do
   echo $FICH($i)  # I want resolved first $i and then resolver var FICH10
done

我希望它首先求解$i并将其连接到海岸线,从而返回orFICH的值,但不必输入数字,但它们是通过循环解析的$FICH10$FICH20

我没有解决关联的响应

$ for i in 10 20
> do
> echo $((FICH$i))
> done
ksh: line 3: primero: parameter not set

答案1

使用变量间接:

#!/bin/bash
fich10=primero.sh
fich20=segundo.sh

for i in 10 20 ; do
    var=fich$i
    echo ${!var}
done

注意我使用小型大写字母作为变量名称,因为它们不是系统变量。

答案2

对于 bash 版本 4.3+,您可以使用“nameref”:

for i in 10 20; do
    declare -n var="FICH$i"
    echo "$var"
done

我们可以用来eval强制进行第二轮变量替换,但正如您所看到的,这不是必需的。eval通常认为在大多数情况下使用太危险。

相关内容