Interactions script bash et application en ligne de commande

Interactions script bash et application en ligne de commande - Shell/Batch - Programmation

Marsh Posté le 07-07-2015 à 04:51:59    

Bonjour à tous :)
 
Je suis actuellement sur un projet et j'aurai besoin de votre aide car je ne sais pas si ce que je veux faire est possible ou non.
Je vous explique:
Dans mon projet que je réalise en Java, je dois appeler différents programmes. Mon application tournera sur une machine Windows mais les programmes que je souhaite appeler sont des programmes Linux. Ainsi, j'ai installé Cygwin sur ma machine et tout fonctionne très bien.
Mon souhait est de réaliser dans un premier temps un script Batch qui est appelé depuis mon programme Java. Ce script n'a pour but que d'ouvrir Cygwin et de lancer le second script, un script Bash cette fois ci.
En gros dans le script Batch il y a le code suivant:

Code :
  1. c:\cygwin\bin\bash.exe -l c:/chemin/vers/script/bash.sh


J'ai testé et ça fonctionne niquel, ça me lance bien Cygwin accompagné par le script bash de mon choix.
 
Dans mon script bash, je demande l'ouverture du logiciel de mon choix:

Code :
  1. ./application


 
Cette application est une application qui fonctionne en ligne de commande. Pour interagir avec elle je dois lui taper des commandes du style:

Code :
  1. (voice.list)
  2. (SayText "Salut la compagnie" )
  3. (exit)


 
Le problème c'est que je ne sais absolument pas comment faire dans mon script bash pour dire que je veux écrire des lignes de commandes une fois que le logiciel est ouvert.. Ce qui se passe dans mon script c'est que ça ouvre le logiciel de mon choix puis plus rien. Par contre dès que je ferme cette application, hop les commandes s'exécutent.
 
Je ne sais pas du tout si je suis clair, mais j'espère que quelqu'un comprendra mon soucis et parviendra à m'aider.
 
P.S: J'espère aussi que je me fais bien comprendre, pour moi un Batch est un script *.bat sous Windows tandis qu'un Bash est un *.sh sous Linux.
 
Merci à vous

Reply

Marsh Posté le 07-07-2015 à 04:51:59   

Reply

Marsh Posté le 08-07-2015 à 21:59:17    

salut,
 
ça dépend des capacités de l'application.
tu peux essayer avec un pipe :

Code :
  1. echo "tes_commandes" | ./application


ou avec un document en ligne :

Code :
  1. ./application <<eof
  2. tes_commandes
  3. eof

'faut voir la doc; peut-être est-il possible d'utiliser un fichier qui serait passé en argument (via une option) au programme.

Reply

Marsh Posté le 09-07-2015 à 00:30:15    

Habile  [:gingerspirit:3]  
 
J'ai regardé tout à l'heure et effectivement il existe une option --script <chemin_vers_le_script> pour lancer mon programme.
Par contre aucune indication sur le langage à utiliser pour le script, j'ai essayé bash (histoire de pouvoir récupérer les arguments placés dans la commande lors de l'appel) mais ça ne fonctionne pas...
 
Au pire je le ferai dans mon programme Java en écrivant dans un fichier si je n'arrive pas à savoir comment récupérer les arguments, mais c'est vraiment pas top.
 
EDIT: Voilà ce qui est écrit dans la documentation:

Spoiler :

--script scriptfile
Run scriptfile as a Festival script file. This is similar to to --batch but it encapsulates the command line arguments into the Scheme variables argv and argc, so that Festival scripts may process their command line arguments just like any other program.


 
Du coup les arguments semblent accessibles via argv...


Message édité par holy-calamity le 09-07-2015 à 00:34:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed