특정 스크립트(예:)를 실행하여 개발 중인 소프트웨어를 테스트하고 싶습니다 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