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
변수 대체의 두 번째 라운드를 강제하는 데 사용할 수 있지만 eval
보시다시피 이것이 필수는 아닙니다. eval
일반적으로 대부분의 상황에서 사용하기에는 너무 위험한 것으로 간주됩니다.