이 코드는 올바르게 작동하지만 동일한 조건의 다른 버전에서는 작동하지 않는 이유는 무엇입니까?
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
정말로 찾고 싶다면끈(정규 표현식 대신) -F
with도 사용해야 합니다.grep