다음 줄을 포함하는 작은 스크립트가 있습니다
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입니다.)