[완료]쉘스크립트에서 변수 정의 방법

dcmru의 이미지

쉘스크립트에서 변수를 정의하는데, 유동적으로 정의하려고 합니다.

예로

TEST_1="TEST_STRING"
CNT=1

로 정의 하고

TEST_"$CNT" 를 묶어 전체 변수로 사용하려고 합니다. 결과적으로 $TEST_1 을 완성시켜 사용하려고 합니다.

echo $TEST_1 하면 TEST_STRING 가 출력되는 것입니다.

변수 완성을 어떻게 해야하는 것인가요? $(TEST_$CNT) 이렇게 안되네요.

어떻게 해야할까요?

bushi의 이미지

[bushi@rose ~]$ CNT=1
[bushi@rose ~]$ eval declare TEST_${CNT}=\""test string #${CNT}"\"
[bushi@rose ~]$ CNT=2
[bushi@rose ~]$ eval declare TEST_${CNT}=\""test string #${CNT}"\"
[bushi@rose ~]$ CNT=3
[bushi@rose ~]$ eval declare TEST_${CNT}=\""test string #${CNT}"\"
[bushi@rose ~]$ 
 
[bushi@rose ~]$ for i in 1 2 3; do eval echo \${TEST_${i}}; done
test string #1
test string #2
test string #3
[bushi@rose ~]$
 
[bushi@rose ~]$ for i in 1 2 3; do tmp=TEST_${i}; echo ${!tmp}; done
test string #1
test string #2
test string #3
[bushi@rose ~]$

OTL

dcmru의 이미지

생각하다가 배열로 풀어버렸는데, 다른 방법도 있었네요. eval 명령어를 처음 봤습니다. 좀더 살펴봐야겠네요.
-------------------------------------------------------
노력만이 살길이다.

노력만이 살길이다.

dcmru의 이미지

배열은 bash 의존적인 것이라 sh에도 사용해야하므로 eval을 사용해야할 듯 합니다. ^^;
그런데 sh에서도 eval에 declare같은 내부명령어가 없는 OS도 있네요;;;
-------------------------------------------------------
노력만이 살길이다.

노력만이 살길이다.