Bash 스크립트의 perl 명령이 교체를 수행하지 못하는 경우 경고를 작성합니다.

Bash 스크립트의 perl 명령이 교체를 수행하지 못하는 경우 경고를 작성합니다.

Perl을 사용하여 구성 파일의 정규식을 대체하는 bash 스크립트가 있습니다. 누군가가 정규식을 사용하지 않아야 하는 conf 파일의 일부를 수동으로 수정한 경우 찾고 있는 줄이 존재하지 않거나 더 이상 정규식과 일치하지 않기 때문에 실패할 수 있습니다.

교체가 발생했는지 확인하기 위해 빠른 검사를 추가하고, 그렇지 않은 경우 약속된 구성을 수행할 수 없으며 conf 파일을 수동으로 업데이트해야 한다는 오류 메시지를 stdout에 작성하고 싶습니다.

Perl 명령을 실행할 때 성공적으로 무언가를 찾아서 바꾸는지 어떻게 확인합니까?

답변1

Perl에서는 예상 수량에 도달하지 못한 경우 교체 수량을 계산하여 실패로 표시할 수 있으며, 교체 수량을 유지해야 한다는 단점, 오탐 위험 등이 있습니다.

$ (echo cat; echo dog) \
  | perl -ple '$s += s/cat/gato/; $s += s/dog/perro/;' \
    -e 'END { die "incomplete sub" if $s != 2 }'

또는 대체된 데이터를 새 파일에 외부적으로 쓰고 newfile원본 데이터와 다른지 확인합니다 file.

perl ... file > newfile
cmp file newfile && echo >&2 "error unchanged"

이 형식의 단점은 다음 여부만 감지할 수 있다는 것입니다.아니요일부 교체가 실패할 때보다는 변경하십시오.

관련 정보