
변수 이름에 다른 변수 문자열이 있는 쉘 변수의 값을 에코하고 싶습니다. 예:
우리는 다음과 같은 출력을 원합니다
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