나는'm 고군분투하는 이유는 다음 반환하는 코드의 1.
echo 'Total' | grep -c No
0
그래서"아"지 않't 에 존재"총". 하지만 그런 다음 보고 그 반환기를'm 을 보고 그것으로 1.
echo $?
1
왜 반품 코드로 표시되는 1? 이 있을 얻을 수 있는 방법 이것을 이용할 수 있을까요?
에 따르면남자 grep 페이지
,c
깃발을 위한
-c,--계산 을 억제 정상 출력하는 대신 인쇄의 수를 일치하는 라인에 대한 각각의 입력 파일입니다.
그래서 당신은 무엇을 보고 있다가의 수와 일치하지 않고 혼동으로 종료 코드의grep
일치합니다. 코드가1
이 때문에 일치하는 라인에서의 입력이 있습니다.
에 다른 경우
echo 'No' | grep -c No
1
echo $?
0
도에서 읽을종료 코드
에서남자 grep
페이지
EXIT STATUS 일반적으로 종료 상태입니다 0 는 경우 라인 선택 1 지 않은 경우 라인 선정되었다,그리고 2 오류가 발생한 경우가 발생했습니다.
종료 코드가 1 기 때문에 아무것도 일치에 의해 grep.
EXIT STATUS 종료 상태입니다면 0 으로 선택된 라인을 발견되는 경우 1 찾을 수 없습니다. 오류가 발생한 경우 종료 상태 2. (참고:POSIX 오류 처리 코드 확인해야 한다는'2'또는 더 중대합니다.)
출력은 제기 때문에 수'총'에 포함되어 있습니다. 이로 인해-c 옵션:
-c,--계산 을 억제 정상 출력하는 대신 인쇄의 수를 일치하는 라인 에 대한 각각의 입력 파일입니다. -V,--반전 매치 옵션(참조하십시오 아래의)계산,비-일치하는 라인입니다. (c 에 의해 지정 POSIX.)
하고 싶은 경우 강제 종료 코드의 0,당신은 단지 추가||true
당신의 명령:
echo 'Total' | grep -c No || true