J'ai récemment essayé d'écrire un script pouvant ê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 faire cela dans bash . Aucun autre langage de script ne fera l'affaire
En outre, je ne préférerais pas une alimentation à la cuillère. Veuillez spécifier comment l'écrire . Il est interdit d'écrire le script pour moi.
Pour insérer du texte dans le stdin d'un programme, utilisez des conduites et/ou une redirection :
echo 1 | myprogram
(echo "First line"
echo "Second line") | myprogram
myprogram <<EOF
First line
Second line
EOF
Dans le cas de programmes CLI interactifs ( et non complets), il est possible d’utiliser des canaux nommés ou des co-processus comme une sorte de expect
du pauvre (que vous avez exclu à cause de Tcl):
mkfifo in out
myprogram <in >out &
echo "First line" >in
read -r reply <out
mkfifo in out
myprogram <in >out &
exec {infd}>in {outfd}<out
echo "First line" >&$infd
read -r reply <&$outfd
coproc foo { myprogram; }
echo "First line" >&${foo[1]}
read -r reply <&${foo[0]}
(Soyez prudent lorsque vous lisez dans le canal de sortie; par exemple, head -1 <out
ne lira pas une seule ligne - il mettra en mémoire tampon un bloc complet de 4k, imprimera une ligne et éliminera le reste.)
Vous recherchez xdotool .
les exemples de commandes de xdotool sont:
xdotool key 1 Return
xdotool keydown Alt key a keyup Alt