Como todo o bloco while
... done
tem stdin
redirecionado (indiretamente por meio de um canal e depois) do arquivo possibleFiles.txt
, cada comando dentro desse bloco herda o mesmo stdin
. Então, enquanto isso é o que você quer para read
, isso não é o que você quer para askDelete
, porque ele está comendo uma linha de entrada do mesmo possibleFiles.txt
usado por read
.
Felizmente, o tty (seu terminal) ainda está disponível em /dev/tty
. Basta substituir o loop askDelete
por askDelete </dev/tty
e tudo deve funcionar como pretendido.
Você ainda deve adicionar mais verificações: por exemplo, este programa não pode ser executado fora de um terminal (fornecendo respostas pré-preenchidas com outro arquivo) com essa simples correção porque /dev/tty
não funcionará mais: você tem que encontrar maneiras de não "sobrescrever" stdin
.