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?