executando 2 scripts com conexão

1

Foi-me dado algum desafio: existe uma aplicação que me fornece alguma expressão de postfix e espera obter uma solução dentro de 5 segundos. Se não houver solução, ela sai, caso contrário, ela fornece uma expressão adicional.

A interface é como segue:

<some text>
<expression>
<expecting my result>
<next expression>
<expecting my result>

etc.

Se houvesse apenas uma única expressão, pensei em usar o comando tail -1 para obter a última linha para obter a expressão e usar o comando dc para avaliá-la. No entanto, como há um número desconhecido de expressões (até agora), não posso usá-lo e tenho que fazer algum loop até que a string que é lida não esteja iniciando com um número (ou seja, expressão).

Portanto, eu tenho que usar dois scripts:

  1. inicia o aplicativo sempre envia a saída de texto para file1 e executa em segundo plano (script 1)
  2. leia a última linha de um script o arquivo1 (script 2), avalie uma solução e envie para o arquivo2 (script 2)
  3. leia a solução do arquivo2, exclua o arquivo2 (para as próximas soluções), traga o aplicativo para primeiro plano, envie uma solução e envie o aplicativo para segundo plano (script 1)

No entanto, parece ser um pouco complicado para mim.

Alguma sugestão de como simplificar o procedimento para resolvê-lo?

    
por user1977050 21.06.2017 / 10:33

1 resposta

0

Eu sugiro procurar em pipes nomeados, já que você não deve precisar de um arquivo para nada disso.

No entanto, algo como:

mkfifo mypipe
script1 <mypipe | grep --line-buffered '^[0-9]' | dc >mypipe

Deve estar perto do que você deseja. Isso pressupõe que a entrada tenha os comandos p necessários para que dc imprima o resultado das expressões.

    
por 05.01.2018 / 00:26

Tags