wait
bloqueia até que todas as tarefas em segundo plano tenham retornado, portanto você não pode usá-la como a condição until
, pois ela será executada apenas uma vez.
Você pode usar [ -n "$(jobs)" ]
para ver se tem trabalhos em execução:
while [ -n "$(jobs)" ]; do
printf "\b${sp:i++%${#sp}:1}"
sleep 0.1
done