Você precisará depurar isso um pouco. Para iniciantes, adicione comandos echo para despejar o fluxo e, opcionalmente, as variáveis após cada loop e if.
Você consegue executar o comando com a depuração ativada ? Isso fornecerá praticamente o mesmo nível de detalhes, ajudando você a entender o que o fluxo do script está fazendo na realidade. Além disso, este post no unix explica como obter números de linha da depuração que o bash nos forneceu.