cat file.txt
v1 aa
v2 bb
v3 cc
v4 dd
v5 ee
v6 ff
cat eval.sh
#!/bin/bash
while read name value
do
eval "${name}=${value}"
done < file.txt
echo "v1 = ${v1}"
echo "v2 = ${v2}"
echo "v3 = ${v3}"
echo "v4 = ${v4}"
echo "v5 = ${v5}"
echo "v6 = ${v6}"
./eval.sh
v1 = aa
v2 = bb
v3 = cc
v4 = dd
v5 = ee
v6 = ff
cat last.sh
#!/bin/bash
echo "$1, $2, $3, $4, $5, ..."
echo "\$$#"
eval echo "\$$#"
./last.sh aa bb cc
aa, bb, cc, , , ...
$3
cc
cat eval.sh
#!/bin/bash
while read name value
do
#eval "${name}=${value}"
${name}=${value}
done < file.txt
echo "v1 = ${v1}"
echo "v2 = ${v2}"
echo "v3 = ${v3}"
echo "v4 = ${v4}"
echo "v5 = ${v5}"
echo "v6 = ${v6}"
./eval.sh
./eval.sh: line 6: v1=aa: command not found
./eval.sh: line 6: v2=bb: command not found
./eval.sh: line 6: v3=cc: command not found
./eval.sh: line 6: v4=dd: command not found
./eval.sh: line 6: v5=ee: command not found
./eval.sh: line 6: v6=ff: command not found
v1 =
v2 =
v3 =
v4 =
v5 =
v6 =
dell:~/tmp
> zz=ls
dell:~/tmp
> echo $zz
ls
dell:~/tmp
> $zz
eval.sh file.txt last.sh
dell:~/tmp
> yy="aa=bb"
dell:~/tmp
> echo $yy
aa=bb
dell:~/tmp
> $yy
bash: aa=bb: command not found
dell:~/tmp
> aa=bb
dell:~/tmp
> "aa=bb"
bash: aa=bb: command not found
dell:~/tmp
> "ls"
eval.sh file.txt last.sh