如何使用 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
    };
}

相关内容