HTML 파일의 일괄 유효성 검사(w3c 유효성 검사기) 페이로드를 위한 셸 스크립트를 작성 중입니다.
나는 그것을 사용하고 있다https://github.com/mozilla/html5-lint실제 검증 작업을 수행하기 위한 Python 스크립트를 제공합니다.
현재 실행 중인 명령은 다음과 같습니다.
find . -type f -name "*q2*.html" -print -exec ~/Downloads/html5-lint-master/html5check.py -e {} \;
이는 다음 형식의 출력을 실행하고 생성합니다.
The document is valid HTML5 + ARIA + SVG 1.1 + MathML 2.0 (subject to the utter previewness of this service).
유효한 경우.
또는 오류 목록 - 예:
Error: Attribute “placeholder” is only allowed when the input type is “email”, “number”, “password”, “search”, “tel”, “text”, or “url”.
From line 53, column 13; to line 53, column 92
Error: Attribute “placeholder” is only allowed when the input type is “email”, “number”, “password”, “search”, “tel”, “text”, or “url”.
From line 57, column 13; to line 57, column 95
There were errors. (Tried in the text/html mode.)
응답에 따라 출력이 포함된 HTML 파일과 동일한 폴더에 valid.txt 또는 valid.txt라는 파일을 생성하고 싶습니다.
이를 달성하는 최선의 방법에 대한 제안이 있으십니까?
답변1
다음과 같이 사용할 수 있습니다.
find . -type f -name '*q2*.html' -execdir sh -c '
your/script "$1" > invalid.txt
grep -q "Error:" invalid.txt || mv invalid.txt valid.txt
' sh {} \;
(in)valid.txt
동일한 디렉토리에 일치하는 html 파일이 여러 개 있으면 파일을 덮어쓰게 됩니다 . 이름이 각 디렉터리에서 고유하도록 출력 파일 이름에 find
포함할 수 있습니다 .$(basename "$1")
를 사용하면 -execdir
발견된 각 파일의 디렉터리에서 명령이 실행됩니다.
grep -q
1
찾을 수 없으면 자동으로 종료되고 실패하므로( ) Error:
후속 명령이 실행됩니다. ||
오류가 발견되면 성공적으로 grep
종료( 0
)하고 mv
실행하지 않습니다.
스크립트 등의 특정 오류를 포착하기 위해 더 추가할 수 있습니다. 또한 유효한 파일에 대한 검색 패턴이 존재하지 않는지 확인하십시오.
또 다른 접근 방식은 프로그램에서 인쇄한 메시지와 아무 관련이 없는 종료 코드를 사용하는 것입니다.
import sys
Python 스크립트에 추가하고 sys.exit(0)
유효하거나 sys.exit(42)
유효하지 않은 파일에 사용합니다. 실행 후 종료 코드( $?
)를 구문 분석하고 수행할 작업을 결정합니다.
또한보십시오:https://tldp.org/LDP/abs/html/exitcodes.html
예:
your/script "$1" > output.txt
result=$?
((result == 0)) && do stuff for valid file
((result == 42)) && do stuff for invalid file