-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" 오류가 발생함에도 불구하고 상태가 종료됩니다 .file
grep
0