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

크루디니(Crudeni)를 시도해 볼 수 있습니다.

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

관련 정보