
조건부로 사용할 때는 항상 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" 오류에도 불구하고 상태 로 종료되었습니다 .-q
file
wrongfile
file
grep
0