변수가 다른 변수 내에 중첩되어 있습니다.

변수가 다른 변수 내에 중첩되어 있습니다.

나는 이러한 변수를 가지고

a1=0.017
a2=0.2
a3=10.7
a4=20.9
a5=35.4

for ((x=1; x<=5; x++))
do
 for i in a${x}
 do
 echo "Welcome $i times"
 done
done

출력은 다음과 같아야 합니다.

"Welcome 0.017 times"
"Welcome 0.2 times"
"Welcome 10.7 times"
"Welcome 20.9 times"
"Welcome 35.4 times"

하지만 내 현재 출력은

Welcome a1 times
Welcome a2 times
Welcome a3 times
Welcome a4 times
Welcome a5 times

a1을 "10" 형식의 $a1로 어떻게 인쇄합니까?

그렇지 않으면 다음을 수행해야 합니다.

for i in $a1 $a2 $a3 $a4 $a5
do
 echo "Welcome $i times"
done

문제는 "a" 변수가 100개가 넘고 위의 마지막 옵션을 사용할 수 없다는 것입니다.

"루프" 외부의 새로운 제안도 좋습니다.

매우 감사합니다

답변1

귀하의 요청을 이행하는 것은 어렵지 않습니다.

a1=0.017
a2=0.2
a3=10.7
a4=20.9
a5=35.4

for ((x = 1; x <= 5; x++)); do
    var="a${x}"
    echo "Welcome ${!var} times"
done

a그러나 배열 변수를 만드는 것이 더 쉽습니다.

a=(
    0.017
    0.2
    10.7
    20.9
    35.4
)

for x in "${a[@]}"; do
    echo "Welcome ${x} times"
done

관련 정보