셸 스크립트를 작성 중이며 명령 출력에 특정 문자열이 포함되어 있는지 확인하려고합니다. 아마도 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