Este é um ponto de partida bash
:
OIFS="$IFS"
IFS=/; set -f
for piece in $(cat file)
do
var=$(echo "$piece" | cut -d= -f1)
val=$(echo "$piece" | cut -d= -f2-)
[ -n "$var" ] && eval $var=\"$val\"
done
IFS="$OIFS"
unset piece var val
Enquanto ele ignora nomes de variáveis vazios, isso não faz nenhuma verificação de sanidade dos próprios nomes das variáveis.
Segunda maneira, desde que eu estava determinado a encontrar uma maneira de fazer isso com read
:
declare -a vars
IFS=/ read -a vars < file
for piece in ${vars[*]}
do
mangle=$(echo "$piece" | sed 's/=\(.*\)/=""/')
eval $mangle
done
unset vars piece mangle
A linha mangle está ali apenas para citar o valor após o sinal de igual.