[bash] 명령 출력에 쉘 스크립트의 특정 문자열이 포함되어 있는지 확인

셸 스크립트를 작성 중이며 명령 출력에 특정 문자열이 포함되어 있는지 확인하려고합니다. 아마도 grep을 사용해야한다고 생각하지만 어떻게해야할지 모르겠습니다. 아는 사람 있나요?



답변

grep의 반환 값을 테스트합니다.

./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
   echo "matched"
fi

관용적으로 다음과 같이 수행됩니다.

if ./somecommand | grep -q 'string'; then
   echo "matched"
fi

그리고 또한:

./somecommand | grep -q 'string' && echo 'matched'


답변

테스트 $?는 안티 패턴입니다.

if ./somecommand | grep -q 'string'; then
  echo "matched"
fi


답변

또 다른 옵션은 명령 출력에서 ​​정규식 일치를 확인하는 것입니다.

예를 들면 :

[[ "$(./somecommand)" =~ "sub string" ]] && echo "Output includes 'sub string'"


답변

깨끗한 if / else 조건부 쉘 스크립트 :

if ./somecommand | grep -q 'some_string'; then
  echo "exists"
else
  echo "doesn't exist"
fi


답변