Ho un problema in uno dei miei script di shell. Ho chiesto ad alcuni colleghi, ma tutti scuotono la testa (dopo qualche graffio), quindi sono venuto qui per una risposta.
Secondo la mia comprensione, il seguente script di shell dovrebbe stampare "Count is 5" come ultima riga. Solo che non lo fa. Stampa "Count is 0". Se il "while read" viene sostituito con qualsiasi altro tipo di loop, funziona perfettamente. Ecco la sceneggiatura:
echo "1"> input.data echo "2" >> input.data echo "3" >> input.data echo "4" >> input.data echo "5" >> input.data CNT = 0 cat input.data | durante la lettura; fare lascia CNT ++; echo "Conteggio fino a $ CNT" fatto echo "Il conteggio è $ CNT"
Perché succede e come posso prevenirlo? Ho provato questo in Debian Lenny e Squeeze, stesso risultato (es. Bash 3.2.39 e bash 4.1.5. Ammetto pienamente di non essere un mago di script di shell, quindi qualsiasi suggerimento sarebbe apprezzato.