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」に設定され、バックスラッシュのエスケープレベルが1段階減少します。したがって、次のようになります。

eval X=\$$i

になる:

X=$VAR1

計算結果は次のとおりです。

X=mom

(次のループを繰り返します。$ iのみVAR2、$ VAR2 = dadです。)

おすすめ記事