2017-10-05 8 views
0

Donc, j'essaie d'automatiser le passage d'un menu d'application python qui s'exécute sous Linux via la ligne de commande. Je sais quelles commandes je dois entrer pour parcourir le menu, mais je n'arrive pas à comprendre comment obtenir un script shell pour faire ce que je veux. Au lieu de cela, il attend jusqu'à la fermeture de l'application pour terminer le script. Par exemple:Interaction avec les applications de ligne de commande Linux

Mon script shell:

#!/usr/bin/bash 

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

Ce que je pense arriver

[[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 ...

Ce qui se passe à la place est que je dois continuer dans le menu moi-même puis il sort tous mes échos lorsque l'application se termine. Une remarque ici est que je ne peux pas installer les bibliothèques qui ne sont pas installées dans Ubuntu. Cet ordinateur n'est pas en réseau et ne peut pas interagir avec un support magnétique pour des raisons de sécurité. Quelles sont mes options?

Merci d'avance!

+0

Vous aimez cette https://stackoverflow.com/a/46193408/2836621 –

Répondre

0

Votre script doit être comme ci-dessous:

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

Vous pouvez aussi utiliser un "ici-doc" -

app.py<<DONE 
1 
2 
3 
DONE 

Mais je déteste ceux-ci. Jetez vos réponses attendues dans un fichier texte et exécutez avec stdin redirigé à partir de cela.

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 

Ensuite, vous pouvez même avoir plusieurs séries de réponses à response.1, response.2, etc.