Ich habe kürzlich versucht, ein Skript zu schreiben, mit dem ich mein C ++ - Programm in Bash automatisieren kann . Wenn Sie AutoIt kennen, kann ich Ihnen einfach ein Beispiel dafür zeigen, was ich versuche:
send("1{enter}")
oder
send("!a")
OK Für diejenigen, die AutoIt nicht sprechen:
Das erste Beispiel sendet einen simulierten "1" -Tastenanschlag, gefolgt von einer Eingabe (CR).
Das zweite Beispiel sendet Alt-A
Ich versuche speziell, dies in Bash zu tun . Keine andere Skriptsprache ist dafür geeignet
Auch würde ich einen Löffel nicht bevorzugen. Bitte geben Sie an , wie es geschrieben werden soll . Das Schreiben des Skripts ist für mich nicht gestattet.
linux
bash
automation
Ishan
quelle
quelle
Antworten:
Verwenden Sie Pipes und / oder Umleitungen, um Text in die Standardeingabe eines Programms einzufügen :
Im Fall von interaktiven CLI-Programmen ( nicht vollständigen CLI-Programmen ) können Named Pipes oder Coprozesse als eine Art Poor-Man- Programm verwendet werden (
expect
was Sie aufgrund von Tcl ausgeschlossen haben):(Seien Sie vorsichtig, wenn Sie aus der Ausgabepipe
head -1 <out
lesen. Lesen Sie beispielsweise nicht nur eine Zeile, sondern puffern Sie einen vollständigen 4-KB-Block, drucken Sie eine Zeile und verwerfen Sie den Rest.)quelle
grep
undcurl
sind gute Beispiele dafür. Ein vollständiges Terminalprogramm ist etwas, das die Kontrolle über das gesamte Fenster übernimmt, wievim
undscreen
.Du suchst nach xdotool .
xdotools Äquivalent zu Ihren Beispielbefehlen lautet:
quelle