Bash Script para esperar por parte do processo

0

Estou tentando executar um programa na linha de comando usando um script bash. Este programa é muito simples. Chamo de linha de comando como x , em seguida, alimentei 1 , filename , 5 , 6 , 7 mas estou tendo um pouco de dificuldade com :

  1. alimentando as entradas corretas nos momentos certos, ou seja, esperando para inserir os 5 até depois que o (s) processo (s) iniciado (s) pela entrada 1 tiver terminado
  2. certificando-se de que as entradas estão realmente chegando ao próprio programa.

O programa solicita as entradas depois de começar, e então eu posso inseri-las a partir da linha de comando, então eu pensei que poderia fazer isso com um script bash. (É o meu primeiro script bash. Eu nem sequer "Hello world" antes de abordar isso.)

Eu tentei usar um wait e olhei para until e coisas desse tipo. Alguma sugestão de algum de vocês?

    
por Tanner Strunk 11.03.2018 / 07:18

1 resposta

1

Eu não posso comentar ainda, então postando como uma resposta, ainda que incompleta, já que o OP não postou dados suficientes.

Você provavelmente vai querer ver expect . É uma linguagem de script própria, mas pode ser misturada com bash (embora desencorajada AFAIK). De uma forma mais simples, funciona assim:

#!/usr/bin/expect
expect "Prompt: "
send "my input\r"
expect eof

\r significa return (eu acho), simplesmente uma tecla enter .

Portanto, por exemplo, o script expect do seu programa pode ter esta aparência:

#!/usr/bin/expect
expect "Provide 1: "
send "1\r

expect "Provide filename: "
send "foobar.txt\r"

expect "Provide 5: "
send "5\r"
# and so on...
expect eof

Por favor, forneça o código que você tem até agora e exemplos de prompts de saída do seu programa "x", para que possamos adaptar a resposta às suas necessidades.

    
por 11.03.2018 / 07:58