Dado que a sequência cf push completa apenas depois de ter iniciado o serviço (ou morreu tentando, suponho), você pode encadear um pipeline que diz (em inglês): "iniciar o push cf e procurar por um ' success 'message; caso veja, execute cf logs ".
Na sintaxe do shell, isso seria (com seus comandos de exemplo):
cf push [appname] -f [manifest.yml] | grep -q "service has been created" && \
cf logs [appname] > [appname].log
Isso usa o pipeline do shell para conectar a saída de cf push com o comando grep . O comando grep (-q for quietly) procura a mensagem de sucesso (substitua a string que usei com o que cf push realmente produz). Se o grep encontrar a mensagem, sairá com um código de retorno bem-sucedido; Isso permitirá que o operador && execute o comando cf logs . Se grep não for bem-sucedido, o operador && não executará o comando cf logs . Usei uma barra invertida \ após o && apenas para incluir bem o código; os comandos podem estar todos em uma linha.
Para mais informações, consulte O que são os operadores de controle e redirecionamento do shell?