O Vi deve ser chamado em primeiro plano para interagir com ele:
#!/bin/bash
vi &
pid=$!
fg
for times in {1..600}
do
kill -0 "$pid" || break
sleep 1
done
kill "$pid"
reset
Além disso, neste caso, temos um loop de 600 vezes para aguardar 1 segundo, para que possamos verificar se vi
ainda está em execução. Se não, então podemos parar de esperar e continuar com o script.
Além disso, isso explica por que reset
é usado no final.