Como eu valido um arquivo de configurações (ini) para os valores esperados usando o bash?

2

Depois de verificar se o arquivo ini existe onde deveria estar, o que aprendi, gostaria de verificar o arquivo para a formatação adequada. Gostaria de validar qualquer número de entradas de "site" no arquivo e verificar se cada entrada segue o padrão abaixo, incluindo a nova linha.

 1| [site1]
 2| shortcut=x1
 3| site=example1.com
 4| theme=alpha
 5|
 6| [site2]
 7| shortcut=x2
 8| site=example2.com
 9| theme=beta
10|  

Eu tenho os valores individuais sendo validados enquanto eles estão sendo lidos. Eu só quero ter certeza de que o padrão está correto antes de processar o arquivo que ecoa o número da linha onde o padrão é quebrado, se não for.

    
por dimmech 17.08.2014 / 21:33

2 respostas

2

Você poderia tentar crudini

crudini --get file.ini |
while read section; do
  test "$(crudini --get t.ini $section | paste -d, - - -)" = \
       'shortcut,site,theme' ||
    echo error in section $section
done
    
por 25.08.2014 / 17:02
0

Como uma opção possível:

BEGIN{
    FS="="
}
{
    if ($1~/\[.*\]/) {
        in_section=1;
        sec_name=$1
        next
    };
    if ($1~/^$/) {
        if ((c!=3) || (err)) {
            print "error in section "sec_name 
        };
        in_section=0; 
        sec_name="";
        c=0;
        err=0
    };
    if (in_section) {
        if ($1=="shortcut") {c++; next};
        if ($1=="site")     {c++; next};
        if ($1=="theme")    {c++; next};
        err=1
    };
}
END{
     if (in_section) {
        print "error in section "sec_name
    };
}
    
por 17.08.2014 / 22:35