Aqui está um cenário possível. Coloque seu código rsync existente ( if [[ -d $DESTINATION ...
)
em uma função shell, digamos runbackup
,
e substitua a parte que faz . $CONFIG_FILE
por um loop que lê o arquivo
e procura o separador de seção [SERVER_...]
. Quando encontra um, chama o
função runbackup (exceto para o primeiro). Para as outras linhas, ele faz eval
em cada linha, assim como .
.
Para garantir que o runbackup seja chamado na última seção, uma seção dummy [END]
é adicionada à entrada.
(cat $CONFIG_FILE; echo '[END]') |
while read line
do if [[ "$line" =~ ^\[([A-Z_0-9]+)\] ]]
then if [ -n "$OPTIONS" -a -n "$REMOTE_IP" ]
then echo "section $section"
runbackup
fi
section=${BASH_REMATCH[1]} # captured from =~ regex above
unset OPTIONS REMOTE_IP SOURCE DESTINATION
else eval $line
fi
done