Вам не нужен источник, поэтому вы должны:
1. прочитать конфиг, 2. проверить строки 3. проверить их
CONFIGFILE="/path/to/config"
echo "=$ADMIN= =$TODO= =$FILE=" #these variables are not defined here
eval $(sed '/:/!d;/^ *#/d;s/:/ /;' < "$CONFIGFILE" | while read -r key val
do
#verify here
#...
str="$key='$val'"
echo "$str"
done)
echo =$ADMIN= =$TODO= =$FILE= #here are defined
образец файла конфигурации
ADMIN: root
TODO: delete
var=badly_formtatted_line_without_colon
#comment
FILE: /path/to/file
при запуске приведенного выше образца должно получиться (не проверено):
== == ==
=root= =delete= =/path/to/file=
уверен, что это не лучшее решение - может быть, кто-то опубликовать более хорошее.