자동 옵션이 ​​없는 조건부 grep

자동 옵션이 ​​없는 조건부 grep

조건부로 사용할 때는 항상 Quiet( -q) 옵션을 사용해야 한다고 생각했습니다 grep. 하지만 페이지를 다시 읽어보면 man페이지 없이도 작동할 것 같습니다.

따라서 일치 항목을 인쇄하여 조건부로 사용하려면 다음과 같이 할 수 있습니까?

grep PATTERN FILE && do_something_else

나를 불확실하게 만드는 유일한 것은 종료 상태에 약간의 차이가 있는 것 같다는 것입니다.

와 함께 -q,

  • grep은 "일치하는 항목이 발견되면 0 상태로 즉시 종료됩니다.오류가 감지되더라도".

없이-q

  • "선택한 행이 발견되면 종료 상태는 0이고 발견되지 않으면 1입니다. 오류가 발생한 경우 종료 상태는 2입니다.".

그런데 그 차이가 눈에 띄게 나타나는 예가 생각나지 않나요?

답변1

예는 다음과 같습니다.

$ echo "foo" > file
$ grep foo file wrongfile; echo "Exit status: $?"
file:foo
grep: wrongfile: No such file or directory
Exit status: 2
$ grep -q foo file wrongfile;  echo "Exit status: $?"
Exit status: 0

따라서 file문자열이 포함된 파일이 있습니다 foo. on 및 존재하지 않는 grep으로 실행했을 때 일치하는 항목이 포함되어 있기 때문에 "No such file" 오류에도 불구하고 상태 로 종료되었습니다 .-qfilewrongfilefilegrep0

관련 정보