Bashを使用して設定(ini)ファイルの推定値を確認するには?

Bashを使用して設定(ini)ファイルの推定値を確認するには?

iniファイルが予想される場所にあることを確認した後(方法を学びました)、ファイル形式が正しいことを確認したいと思います。ファイル内の「サイト」項目の数に関係なく検証し、各項目が新しい行を含む以下のパターンに従うことを確認したいと思います。

 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|  

個々の値を読みながら確認しました。ファイルを処理する前にパターンが正しいことを確認し、パターンが正しくない場合は、パターンが壊れる行番号をエコーし​​たいと思います。

答え1

クルディーニを試してみてください。

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

答え2

可能なオプション:

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
    };
}

関連情報