다른 문자열 쉘 변수의 문자열을 에코하는 방법

다른 문자열 쉘 변수의 문자열을 에코하는 방법

변수 이름에 다른 변수 문자열이 있는 쉘 변수의 값을 에코하고 싶습니다. 예:

우리는 다음과 같은 출력을 원합니다

var1=1
var2=2

아래와 유사한 여러 가지 다양한 형태를 시도했지만 작동하지 않습니다.

for j in {1..2}
do
   export var${j}=$j
   echo "var${j}=${var${j}}"
done 

이름에 변수 문자열이 포함된 쉘 변수를 어떻게 설정하고 에코합니까?

감사합니다

답변1

Bash(또는 ksh)에서는 간접 구문을 사용하여 ${!var}이름이 값인 변수를 참조 할 수 있습니다 $var. 완전한 이름이어야 하므로 다음과 같이 해야 합니다.

for j in {1..2}; do
   # This could have been declare instead of export if you don't need
   # to export the variable.
   export var${j}=$j
   varname=var$j
   echo "var${j}=${!varname}"
done

답변2

~할 수 있다@rici가 설명한 대로 이 작업을 수행하지만 좋은 생각은 거의 없습니다. 대신 배열을 사용하면 더 간단한 구문으로 동일한 결과를 얻을 수 있습니다.

var=("1" "2");
for j in {0..1}
do
    echo "var$j : ${var[$j]}"
done

관련 정보