Definir uma condição para o loop while
Se você substituir
while true
por:
while [ "$(dropbox status)" != "Up to date" ]
funciona como você descreve.
O comando
Para parar / iniciar Dropbox
e terminar após a conclusão da sincronização:
dropbox stop && dropbox start && while [ "$(dropbox status)" != "Up to date" ]; do dropbox status; sleep 1; done
Ou melhor (para evitar o dobro de dropbox status
):
dropbox stop && dropbox start && while [ "$(dropbox status)" != "Up to date" ]; do echo "Updating"; sleep 1 ; done && echo "Finished"
Explicação
while true
está aguardando uma condição de quebra dentro do loop (que nunca aparece), mas while [ "$(dropbox status)" != "Up to date"
faz o loop quebrar se dropbox status
retornar Up to date