Bash - 조건문의 grep 문제

Bash - 조건문의 grep 문제

이 코드는 올바르게 작동하지만 동일한 조건의 다른 버전에서는 작동하지 않는 이유는 무엇입니까?

if grep -q string file; then
    echo found
else
    echo not found
fi

이것은 작동하지 않습니다:

if [ ! `grep -q string file` ]; then
    echo not found
else
    echo found
fi

답변1

`grep -q string file`, 백틱(또는 $(...),어느 것이 더 낫습니까?)는 다음으로 대체됩니다.산출grep. 사용 되었으므로 -q빈 문자열이 됩니다.

테스트를 무효화하려면 !테스트 앞에 다음을 삽입하면 됩니다.

if ! grep -q pattern file; then
    echo not found
else
    echo found
fi

정말로 찾고 싶다면(정규 표현식 대신) -Fwith도 사용해야 합니다.grep

관련 정보