Recentemente, eu tenho tentado escrever um script que pode ser usado para automatizar meu programa c ++ no bash. Se você conhece o AutoIt, posso simplesmente mostrar um exemplo do que estou tentando fazer:
send("1{enter}")
ou
send("!a")
OK Para quem não fala AutoIt:
O primeiro exemplo envia um pressionamento de tecla "1" simulado seguido de um enter (CR)
O segundo exemplo envia alt-a
Estou especificamente tentando fazer isso no bash . Nenhuma outra linguagem de script fará
Além disso, eu não preferiria uma colherada. Por favor, especifique como escrevê-lo . Não é permitido escrever o script para mim.
linux
bash
automation
Ishan
fonte
fonte
Respostas:
Para alimentar o texto no stdin de um programa, use pipes e / ou redirecionamento :
No caso de programas CLI interativos ( não os de terminal completo), é possível usar pipes nomeados ou coprocesses como uma espécie de pobre
expect
(que você descartou por ser Tcl):(Tenha cuidado ao ler a partir do tubo de saída; por exemplo
head -1 <out
, não lerá apenas uma linha - ele armazenará um bloco completo de 4k, imprimirá uma linha e descartará o restante.)fonte
grep
ecurl
são bons exemplos disso. Um programa de terminal completo é algo que assume o controle de toda a janela, comovim
escreen
.Você está procurando pelo xdotool .
O equivalente do xdotool aos seus comandos de exemplo são:
fonte