eval X=\$$i 在 UNIX 中意味着什么?

eval X=\$$i 在 UNIX 中意味着什么?

我有一个包含以下几行的小脚本

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

我理解其余的行,但我不理解这个 for 循环与 eval 的迭代。有人可以阐明这一点吗?我正在使用带有 Korn Shell 的 Solaris 5.10。

答案1

eval对该行的其余部分执行额外级别的替换和处理。

在循环的第一次迭代中,i 设置为“VAR1”,并且减少了一级反斜杠转义,因此:

eval X=\$$i

变成:

X=$VAR1

其计算结果为:

X=mom

(重复下一个循环,只有 $i 是 VAR2,并且 $VAR2=dad)

相关内容