Digamos que eu tenha o seguinte script:
#!/bin/bash
for i in $(seq 1000)
do
cp /etc/passwd tmp
cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line
cat tmp
done
Na linha chave, leio e escrevo o mesmo arquivo tmp
que às vezes falha.
(Eu li que é por causa das condições de corrida porque os processos no pipeline são executados em paralelo, o que não entendo por que - cada um head
precisa pegar os dados do anterior, não é? Essa NÃO é minha pergunta principal, mas você também pode responder.)
Quando executo o script, ele gera cerca de 200 linhas. Existe alguma maneira de forçar esse script a produzir sempre 0 linhas (para que o redirecionamento de E/S tmp
seja sempre preparado primeiro e os dados sejam sempre destruídos)? Para ser claro, quero dizer alterar as configurações do sistema, não este script.
Obrigado por suas idéias.