프로필에 프로덕션 모드가 아닌 것으로 표시되는 경우에만 경고를 발생시키거나 스크립트를 실행하세요.

프로필에 프로덕션 모드가 아닌 것으로 표시되는 경우에만 경고를 발생시키거나 스크립트를 실행하세요.

특정 스크립트(예:)를 실행하여 개발 중인 소프트웨어를 테스트하고 싶습니다 script file.ext. 그러나 구성 파일(예: file.conf)에 시스템이 프로덕션 모드에 있음을 나타내는 특정 문자열(#이 붙은 주석이 아님)이 포함되어 있으면 스크립트를 실행할 수 없다는 말을 들었습니다.

Bash에서 어떻게 다음과 같은 작업을 수행할 수 있습니까?

file1.conf문자열이 포함되어 in production있고 문자열이 다음 형식이 아닌 경우 something ... # something in production something실행됩니다 script file1.ext.

in production또는 지정된 파일에 주석 대신 문자열이 포함될 때마다 어떻게든 경고를 받을 수 있습니까?

내 생각엔 이 명령을 어떻게든 사용해야 할 것 같아요 inotifywait. 파일을 확인할 뿐만 아니라 file1.conf확장자를 가진 파일이 프로덕션 모드에 있음을 나타낼 때마다 .conf경고를 발생시키는 스크립트가 있으면 좋을 것입니다.

답변1

이를 달성하는 한 가지 방법은 를 사용하는 것입니다 grep.

grep "^[^#]* in production " file.conf || script file.ext

||다음 섹션 은 이전 섹션이 존재하지 않고 종료 코드가 0인 경우와 종료 코드가 0인 모드(첫 번째 인수)가 발견된 경우에만 grep실행됩니다 .

저는 심플한 패턴을 선택했어요 "^[^#]* in production ". 이 문자는 ^행의 시작을 나타내며 [^#]모든 문자를 나타낼 수 있지만 #수량자 *표현에는 임의의 수의 문자가 포함될 수 있습니다. 스키마의 나머지 부분은 프로덕션 스키마에 레이블을 지정하려는 텍스트입니다.

모든 출력을 생성 하지 않으려면 grep다음으로 보낼 수 있습니다 /dev/null.

grep "^[^#]* in production " file.conf > /dev/null || script file.ext

프로덕션 모드에 있고 스크립트가 실행되고 있지 않은 경우 메시지를 인쇄하려면 다음을 수행하십시오.

grep "^[^#]* in production " file.conf > /dev/null && \
    echo "We are in production mode. The script was not run." || \
    script file.ext

관련 정보