Si je comprends bien, vous voulez envoyer des commandes spécifiques à votre programme myprogram
en séquence.
Pour ce faire, vous pouvez utiliser un simple script expect
. Je suppose l'invite pour myprogram
est noté avec myprompt>
, et que le symbole myprompt>
ne semble pas response1
:
#!/usr/bin/expect -f
#this is the process we monitor
spawn ./myprogram
#we wait until 'myprompt>' is displayed on screen
expect "myprompt>" {
#when this appears, we send the following input (\r is the ENTER key press)
send "command1\r"
}
#we wait until the 1st command is executed and 'myprompt>' is displayed again
expect "myprompt>" {
#same steps as before
send "command2\r"
}
#if we want to manually interract with our program, uncomment the following line.
#otherwise, the program will terminate once 'command2' is executed
#interact
Pour lancer, invoquez simplement myscript.expect
si le script est dans le même dossier que myprogram
.
Je suis désolé, la façon dont votre question est posée, je ne peux pas le comprendre complètement. Voulez-vous passer automatiquement 'command1' et' command2' à 'myprogram'? Pourriez-vous poster votre entrée/sortie attendue? – Aserre
Oui, 'myprogram' est un exécutable 'C' qui aboutit à une nouvelle invite,' myprompt> '. Je dois envoyer des commandes dans cette nouvelle invite, dites write xxx. Je reçois une réponse 'xxx écrite' et le myprompt retourne jusqu'à ce que je tape exit. Après cela, je suis hors de myprogram et de retour à mon habituel "#" – Aadishri