
次の行を含む小さなスクリプトがあります
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です。)