-1
문자열에 grep
을 입력하고 일치하는 항목이 있으면 필드를 잘라냅니다. 문제는 일치 여부에 상관없이 $?
명령의 결과가 0 인 것입니다. 아래의 출력을 참조하십시오파이프 라인에서 명령 상태 확인
$ R=`grep g09 tor1.sh | cut -d ' ' -f2`
$ echo $R
test
$ R=`grep g09 tor1.sh | cut -d ' ' -f2`
$ echo $?
0
당신이 볼 수 있듯이을, 거기에 일치하지만 $?
0 지금이 볼 수 있습니다 :
$ R=`grep g09 tor.sh | cut -d ' ' -f2`
$ echo $R
$ R=`grep g09 tor.sh | cut -d ' ' -f2`
$ echo $?
0
,이 G09에 대한 일치가 없지만 $?
은 여전히를 왜?
후속 질문에서 @bishop이 지적한 것처럼, 위의'$ {PIPESTATUS [0]}'은 파이프 라인이 서브 쉘에서 실행되기 때문에 올바른 결과를 얻을 수 없습니다. 거기에 사용되는 서브 쉘이 없기 때문에 예제가 괜찮습니다. – codeforester
아주 좋은 포인트 @codeforester. '$ {PIPESTATUS [0]} '을 올바르게 처리 할 수 있도록 프로세스 대체를 사용하도록 응답을 수정했습니다. – anubhava