Chamando .bat do bash termina o loop

1

Estou tendo um problema que é extremamente estranho para mim.

Eu tenho um loop que lê um arquivo linha por linha que se parece com isso:

while read line; do
  echo "Beginning of loop"

  ## Call to function that executes .bat file

  echo "End of loop"
done < $MANIFEST

echo Outside of Loop

Eu chamo o arquivo .bat em um sub shell, por isso não deve afetar nenhuma das minhas variáveis. Parece algo assim:

  $(CMD /c c.bat -c "$SCR_DIR/prepsdk.sh Build $apppath")

O mais estranho é que o arquivo bat finaliza meus loops de alguma forma. Significado eu vou ver o seguinte resultado:

Início do loop Saída de .bat Fim do Loop Fora do loop

Se a chamada para .bat for comentada, vejo

Início do loop Fim do Loop Início do Loop Fim do Loop ..... Início do Loop Fim do Loop Fora do loop

Portanto, o comportamento é o esperado com o arquivo .bat não sendo chamado. O que o arquivo .bat poderia estar fazendo que faz com que o loop seja encerrado assim? Não está modificando o arquivo $ MANIFEST, tive certeza disso.

    
por Millianz 10.08.2012 / 20:46

2 respostas

2

O arquivo em lote pode estar consumindo o restante dos dados do arquivo $MANIFEST , deixando a próxima execução de read line falhar quando vir EOF.

    
por 10.08.2012 / 20:49
0

Tente executar o arquivo em lote com call foo.bat .

Por qualquer motivo, se você executar um arquivo em lotes dentro de outro arquivo em lote sem a instrução de chamada, o arquivo em lote externo será finalizado. Eu não sei porque o comportamento padrão foi sempre desejável.

    
por 10.08.2012 / 23:08