J'ai récemment essayé d'écrire un script qui peut être utilisé pour automatiser mon programme c ++ en bash. Si vous connaissez AutoIt, je peux simplement vous montrer un exemple de ce que j'essaie de faire:
send("1{enter}")
ou
send("!a")
OK Pour ceux qui ne parlent pas AutoIt:
Le premier exemple envoie une frappe simulée "1" suivie d'une entrée (CR)
Le deuxième exemple envoie alt-a
J'essaie spécifiquement de le faire en bash . Aucun autre langage de script ne fera l'affaire
De plus, je ne préférerais pas une cuillère à soupe. Veuillez préciser comment l'écrire . Il n'est pas permis d'écrire le script pour moi.
linux
bash
automation
Ishan
la source
la source
Réponses:
Pour insérer du texte dans le stdin d'un programme, utilisez des canaux et / ou la redirection :
Dans le cas de programmes CLI interactifs ( pas de terminaux complets), il est possible d'utiliser des canaux nommés ou des coprocessus comme une sorte de pauvre
expect
(ce que vous avez exclu en raison de son statut Tcl):(Soyez prudent lorsque vous lisez à partir du tube de sortie; par exemple
head -1 <out
, ne lira pas seulement une ligne - il tamponnera un bloc 4k complet, imprimera une ligne, éliminera le reste.)la source
grep
et encurl
sont de bons exemples. Un programme de terminal complet est quelque chose qui prend le contrôle de la fenêtre entière, commevim
etscreen
.Vous recherchez xdotool .
L'équivalent de xdotool de vos exemples de commandes est:
la source