Isto é o que o Bash while loops faz:
while /path/to/application.app
do
:
done
Ele executará o aplicativo e, se terminar com êxito, execute o corpo do loop. :é o comando no-op do shell (o loop precisa ter um corpo, então é isso que colocamos lá); depois disso, ele volta ao topo e executa o programa novamente. Se falhar, o loop para de executar e o script é encerrado.
No entanto, parece que o que você está executando pode ser um aplicativo Mac comum ( .app): existem alguns problemas que surgem nesse caso. Uma delas é que você precisa usar o opencomando , em vez de correr o diretório do aplicativo diretamente: open /path/to/application.app.
A outra é que, quando você faz open, normalmente termina imediatamente com sucesso, independentemente do que o aplicativo continua a fazer: isso não é absolutamente universal, mas a maioria será. Se o seu se faz, você pode usar a -Wopção para forçar opena bloquear até que as pontas de aplicação: open -W /path/to/application.app. Observe que, se o aplicativo já estiver em execução, isso esperará até que a execução existente termine também.
A quantidade de um problema depende de qual aplicativo você está executando. Se não funcionar bem, fazer isso a partir do shell pode não ser a melhor opção. Nesse caso, é provável que você esteja melhor com o AppleScript, sobre o qual você pode perguntar sobre o Ask Different .