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

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

-q나는 조건적으로 사용될 때 Quiet() 옵션을 사용해야 한다고 항상 믿어왔습니다 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. 실행했는데 grep존재 -q하지 file않는 경우 포함 일치로 wrongfile인해 "No such file" 오류가 발생함에도 불구하고 상태가 종료됩니다 .filegrep0

관련 정보