Inicia o segundo comando ao ver determinada palavra-chave no console

0

Estou executando dois programas python, digamos a.py, b.py

O que eu quero executar dois programas por python3 a.py e python3 b.py , mas python3 b.py precisa ser executado somente quando python3 a.py solicitar uma linha com apenas "olá" na tela - a.py continuará funcionando .

É possível conseguir isso no terminal do Ubuntu?

    
por william007 15.01.2018 / 02:24

1 resposta

1

Você pode enviar a saída de a.py para um arquivo e assistir a esse arquivo:

python3 a.py > output.log &
tail -n+1 -f output.log | grep -q hello && python3 b.py

O primeiro comando executa a.py em segundo plano, enquanto envia a saída para output.log . O segundo comando envia o conteúdo de output.log para grep , que verifica hello . Se grep sair com sucesso, indicando que hello foi encontrado, b.py será executado.

Observe que o tempo não é exato. Devido ao buffering, o segundo script será iniciado algum tempo depois que hello aparecer na saída.

    
por muru 15.01.2018 / 02:34