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
まず解決し、海岸線に接続してFICH
orの値を返しますが、数値を入力する必要はありませんが、ループを介して解決したいと思います。$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
変数置換の第2ラウンドを強制するために使用できますが、ご覧のようにeval
これは必須ではありません。eval
通常、ほとんどの状況で使用するには危険すぎると考えられます。