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
通常认为在大多数情况下使用太危险。