파일에서 제외해야 하는 키워드를 grep하는 쉘 스크립트를 작성하려고 하는데, 제외된 키워드에서 다른 항목을 찾으면 특정 명령을 실행해야 합니다.
logcheck=`grep -vq 'accepting\|idle.' /tmp/lpstat-Final.log`
if [[ $logcheck == 'accepting\|idle.' ]] ; then
status=0
statustxt=OK
else
echo "Something found"
fi
"accept\|idle" 외에도 결과는 "있는 경우"여야 합니다. else 문으로 이동해야 한다는 것을 알았습니다. 그렇지 않으면 현재 상태가 0이 됩니다.
답변1
if ! grep -Evq 'accepting|idle' /tmp/lpstat-Final.log; then
status=0
statustxt=OK
else
echo 'Something found'
fi
여기서 가장 중요한 것은 grep
. -q
이는 명령 대체를 사용하여 아무 것도 캡처하지 않음을 의미합니다( $logcheck
코드에서는 비어 있음). 대신 유틸리티의 종료 상태를 사용하여 무언가가 발견되었는지 확인합니다.
여기서는 정규식을 더 예쁘게 만들기 위해 사용하고 있습니다 -E
. 교체에도 필요합니다( \|
기본 정규식의 교체는 GNU 등에서 지원되는 확장입니다 grep
).