Mam problem z jednym ze skryptów powłoki. Zapytałem kilku kolegów, ale wszyscy tylko potrząsali głowami (po pewnym zadrapaniu), więc przyszedłem tutaj po odpowiedź.
Według mojego zrozumienia następujący skrypt powłoki powinien wypisać „Count is 5” jako ostatni wiersz. Tyle że nie. Wyświetla „Liczba to 0”. Jeśli „podczas odczytu” zostanie zastąpione jakąkolwiek inną pętlą, działa dobrze. Oto skrypt:
echo „1”> input.data echo „2” >> input.data echo „3” >> input.data echo „4” >> input.data echo „5” >> input.data CNT = 0 dane wejściowe kota podczas czytania; robić niech CNT ++; echo „Zliczanie do $ CNT” gotowy echo „Liczba to $ CNT”
Dlaczego tak się dzieje i jak mogę temu zapobiec? Próbowałem tego w Debian Lenny i Squeeze, ten sam wynik (tj. Bash 3.2.39 i bash 4.1.5. W pełni przyznaję, że nie jestem kreatorem skryptów powłoki, więc wszelkie wskazówki będą mile widziane.