UNIX에서 eval X=\$$i는 무엇을 의미합니까?

UNIX에서 eval X=\$$i는 무엇을 의미합니까?

다음 줄을 포함하는 작은 스크립트가 있습니다

echo mom,dad |awk -F, '{print $1,$2}' | while read VAR1 VAR2
do
 for i in VAR1 VAR2
  do
   eval X=\$$i
   echo $X
 done  
done

산출:

mom
dad

이 줄은 무엇을 하고 있나요 eval X=\$$i?

나머지 줄은 이해하지만 eval을 사용하여 이 for 루프를 반복하는 것을 이해하지 못합니다. 누군가 이것에 대해 밝힐 수 있습니까? 저는 Korn Shell과 함께 Solaris 5.10을 사용하고 있습니다.

답변1

eval라인의 나머지 부분에 대해 추가 수준의 교체 및 처리를 수행합니다.

루프의 첫 번째 반복에서 i는 "VAR1"로 설정되고 백슬래시 이스케이프 수준이 한 단계 줄어듭니다. 따라서 다음과 같습니다.

eval X=\$$i

이 되다:

X=$VAR1

계산 결과는 다음과 같습니다.

X=mom

(다음 루프를 반복합니다. $i만 VAR2이고 $VAR2=dad입니다.)

관련 정보