쉘 스크립트 중 하나에 문제가 있습니다. 동료 몇 명에게 물어 보았지만 모두 머리를 흔드는 것 (긁힘 후)으로 답을 찾아 왔습니다.
내 이해에 따르면 다음 쉘 스크립트는 "Count is 5"를 마지막 줄로 인쇄해야합니다. 그렇지 않은 경우를 제외하고. "Count is 0"을 인쇄합니다. "while read"가 다른 종류의 루프로 바뀌면 제대로 작동합니다. 스크립트는 다음과 같습니다.
에코 "1"> 입력 데이터 에코 "2">> 입력 데이터 에코 "3">> 입력 데이터 에코 "4">> 입력 데이터 에코 "5">> 입력 데이터 CNT = 0 고양이 input.data | 읽는 동안; 해야 할 것 CNT ++하자; echo "$ CNT에 계산" 끝난 echo "개수는 $ CNT입니다"
왜 이런 일이 발생하며 어떻게 방지 할 수 있습니까? Debian Lenny와 Squeeze에서 동일한 결과 (예 : bash 3.2.39 및 bash 4.1.5)에서 이것을 시도했습니다. 쉘 스크립트 마법사가 아니라는 것을 완전히 인정하므로 모든 의견을 부탁드립니다.