프로그램의 출력에 특정 단어가 포함된 경우 작업을 수행하도록 쉘 스크립트에 지시합니다.

프로그램의 출력에 특정 단어가 포함된 경우 작업을 수행하도록 쉘 스크립트에 지시합니다.

Bash에서 명령을 실행하고 결과에 단어가 포함되어 있는지 확인하고 단어가 포함되어 있으면 일부 작업을 수행하는 프로그램을 만들어야 합니다.

예: 프린터가 온라인인지 확인해야 합니다.

lpstat -p [printer name]

결과에 이 단어가 포함되어 있으면 inactive스크립트에서 나에게 이메일을 보내야 합니다 .

프로그램 출력에서 ​​특정 단어를 확인하는 방법은 무엇입니까?

답변1

이것이 강한 자의 임무이다 grep.

lpstat -p myprinter | grep inactive

의 출력을 lpstat의 입력에 연결한 grep다음 해당 문자열이 포함된 행을 인쇄합니다.비활성.

다음을 포함하는 줄을 인쇄하세요.단어 비활성(즉,비활성공백, 쉼표 등으로 둘러싸여 있음) 옵션을 추가할 수 있습니다.

lpstat -p myprinter | grep -w inactive

그러나 테스트를 수행하고 싶습니다. grep단어를 찾을 때마다 "성공" 종료 값(실제로는 0)을 생성한다는 것을 알아야 합니다 . 이는 테스트에 사용될 수 있습니다. 또한 명령의 출력에는 관심이 없고 grep성공 상태에만 관심이 있습니다. 그러니 grep조용히 하고 이에 대한 테스트를 구축해 보겠습니다 .

if lpstat -p myprinter | grep -q -w inactive
then
    mail -s "printer is inactive" othin
fi

읽기 과제는 다음과 같습니다.https://www.man7.org/linux/man-pages/man1/grep.1.html.

관련 정보