O que significa eval X = \ $$ i no UNIX?

3

Eu tenho um pequeno script com as seguintes linhas

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

OUTPUT:

mom
dad

O que esta linha fazendo eval X=\$$i ?

Eu entendo o resto das linhas, mas não entendo as iterações desse loop com eval. Alguém pode esclarecer isso? Estou usando o Solaris 5.10 com o Korn Shell.

    
por ayrton_senna 15.09.2015 / 01:27

1 resposta

12

eval realiza um nível extra de substituição e processamento no restante da linha.

Na primeira iteração do loop, i é definido como "VAR1" e um nível de escape de contrabarra é reduzido, portanto:

eval X=\$$i

torna-se:

X=$VAR1

que é avaliado como:

X=mom

(repetir para o próximo loop, apenas $ i é VAR2 e $ VAR2 = dad)

    
por 15.09.2015 / 02:02