Skip to content

5. 변수 간접 참조


어떤 변수의 값이 다음에 나올 변수의 이름이라고 가정해 보자. 예를 들어, var1=var2, var2=var3라고 할 때 var1을 참조하면 var3이 나오는 것을 간접 참조라고 한다. 이때 문법은 eval var1=\$$var2이다.


예제) 간접 참조
#!/bin/bash

a=letter_of_alphabet
letter_of_alphabet=z

# 직접 참조
echo "a = $a"
# a = letter_of_alphabet

# 간접 참조
eval a=\$$a
echo "이제 a = $a"
# 이제 a = z

t=table_cell_3
table_cell_3=24

echo "\"table_cell_3\" = ${table_cell_3}"
echo -n "역참조된(dereferenced) \"t\" = "
# "eval"은 "echo"와 "\$$t" 두 개의 인자를 받아
# $table_cell_3과 똑같이 세트해 줌
eval echo "\$$t 입니다."
# "table_cell_3" = 24
# 역참조된(dereferenced) "t" = 24

t=table_cell_3
NEW_VAL=387
table_cell_3=$NEW_VAL

echo "\"table_cell_3\" 의 값을 ${NEW_VAL} 로 바꿉니다."
echo "\"table_cell_3\" 은 이제 ${table_cell_3} 이고,"
echo -n "역참조된 \"t\" 는 "
eval echo "\$$t 입니다."
# "table_cell_3" 의 값을 387 로 바꿉니다.
# "table_cell_3" 은 이제 387 이고,
# 역참조된 "t" 는 387 입니다.

exit 0

References