2017-10-05 3 views
0

Ich versuche also, ein Python-Anwendungsmenü zu automatisieren, das unter Linux über die Befehlszeile ausgeführt wird. Ich weiß, welche Befehle ich eingeben muss, um durch das Menü zu gehen, aber ich kann nicht herausfinden, wie ich ein Shell-Skript dazu bringe, das zu tun, was ich will. Stattdessen wartet es, bis die Anwendung geschlossen wird, um das Skript zu beenden. Zum Beispiel:Interaktion mit Linux-Befehlszeilenanwendungen

Mein Shell-Skript:

#!/usr/bin/bash 

./App.py 
echo '1' 
echo '2' 
echo '3' 

Was ich

[[email protected] BASH]$ ./auto.sh 
Welcome to App.py! 
Enter 1 to continue or 2 to exit: 1 

Enter 2 to continue or 3 to exit: 2 

etc ...

Was passiert, stattdessen ist, dass ich weiterhin durch das Menü passieren erwarten selbst dann gibt es alle meine Echos aus, wenn die App beendet wird.

Eine Anmerkung hier ist, dass ich keine Bibliotheken installieren kann, die nicht in Ubuntu installiert sind. Dieser Computer ist nicht vernetzt und kann aus Sicherheitsgründen nicht mit magnetischen Medien interagieren. Was sind meine Möglichkeiten?

Vielen Dank im Voraus!

+0

Like this https://stackoverflow.com/a/46193408/2836621 –

Antwort

0

Ihr Skript sollte wie unten sein:

(echo -e "1\n2\n3") | python App.py 
0

Sie auch eine "hier-doc" verwenden könnte -

app.py<<DONE 
1 
2 
3 
DONE 

Aber ich hasse diese. Werfen Sie Ihre erwarteten Antworten in eine Textdatei und führen Sie sie mit der von ihr umgeleiteten stdin aus.

printf "1\n2\n3\n">response.in # I assume it would be a little more complex 
App.py << response.in   # reads response.in as input 

Dann können Sie auch verschiedene Sätze von Reaktionen in response.1 haben, response.2 usw.