Eu tenho um problema em um dos meus scripts de shell. Perguntei a alguns colegas, mas todos eles apenas balançaram a cabeça (depois de alguns arranhões), então eu vim aqui para uma resposta.
De acordo com o meu entendimento, o seguinte script shell deve imprimir "Count is 5" como a última linha. Exceto que não. Imprime "Contagem é 0". Se o "while read" for substituído por qualquer outro tipo de loop, ele funcionará perfeitamente. Aqui está o script:
eco "1"> input.data eco "2" >> input.data eco "3" >> input.data eco "4" >> input.data eco "5" >> input.data CNT = 0 cat input.data | enquanto lê; Faz deixe CNT ++; eco "Contando até $ CNT" feito eco "Contagem é $ CNT"
Por que isso acontece e como posso evitá-lo? Eu tentei isso no Debian Lenny e Squeeze, o mesmo resultado (por exemplo, bash 3.2.39 e bash 4.1.5. Admito totalmente que não sou um assistente de script de shell, para que qualquer ponteiro seja apreciado.