Terima kasih banyak kepada “Gavin Smith” di stackoverflow.com untuk bagian pertama dari tip ini.
Ekspresi seperti ${${a}} tidak berfungsi. Untuk mengatasinya, Anda dapat menggunakan eval:
b=value a=b eval aval=\$$a echo $avalKeluarannya adalah
value
Terima kasih atas tipnya, Gavin!
Oke, jadi kenapa kamu mau?
Bagi saya, saya perlu menguji bahwa variabel tertentu sedang disetel dari file konfigurasi yang disertakan. Menggunakan loop dan teknik bersarang yang ditunjukkan di atas, kita dapat mengambil:
Ini:
if [ "${KIDFILE}" == "" ] ; then
echo "ERROR - KIDFILE Not Set"
exit 1
fi
if [ "${KUSER}" == "" ] ; then
echo "ERROR - KUSER Not Set"
exit 1
fi
if [ "${KSERVER}" == "" ] ; then
echo "ERROR - KSERVER Not Set"
exit 1
fi
if [ "${KRFILE}" == "" ] ; then
echo "ERROR - KRFILE Not Set"
exit 1
fi
if [ "${KLFILE}" == "" ] ; then
echo "ERROR - KLFILE Not Set"
exit 1
fi
if [ "${KLINK}" == "" ] ; then
echo "ERROR - KLINK Not Set"
exit 1
fi Dan ganti dengan yang lebih elegan:
NEEDVARS="KIDFILE KUSER KSERVER KRFILE KLFILE KLINK"
for MYVAR in ${NEEDVARS}; do
eval MYVAL=\$${MYVAR}
if [ "${MYVAL}" = "" ] ; then
echo "${MYVAR} NOT SET"
exit 1
fi
done