2010-12-03 6 views
2

J'ai un programme écrit en C qui fonctionne de la même manière que la sortie ci-dessous.Script shell pour tester le programme de ligne de commande

WELCOME TO PROGRAM. 

Hit 1 to do task 1. 

Hit 2 to do task 2. 

Hit q to quit. 

Ce que je besoin est un script shell bash qui commencent le programme, puis entre 1, 2 et q dans le programme pour que je puisse tester toutes les fonctionnalités dans une seule commande.

Je suppose qu'il ressemble semblable à la

#!/bin/bash 

./start kernel 
1 
2 
q 

Répondre

2

En général, vous utilisez expect pour tester ces types d'applications.

+0

Les solutions mentionnées précédemment semblent fonctionner dans certains cas, mais la vôtre semble être la meilleure solution. Merci pour l'aide byron :) –

4

Vous pouvez utiliser un « document en » suivant. La syntaxe ressemble à ceci:

./start kernel <<EOF 
1 
2 
q 
EOF 

« EOF » peut être ce mot unique que vous voulez, tant que ce n'est pas quelque chose que vous aurez réellement besoin dans l'entrée.

+0

Ceci est une solution intelligente grâce Laurence :) Je –

1

Vous pouvez enregistrer votre entrée dans un fichier texte - input.txt et exécuter votre programme ainsi: ./program < input.txt

+0

appelez cette méthode «l'automatisation du pauvre», et je l'utilise plus souvent que je ne voudrais l'admettre. Zéro erreur de gestion, mais il fait généralement le travail. – bta

0

Vous pouvez considérer les scripts shell comme ce qu'ils sont ... juste chaque ligne étant exécutée dans un shell (quoique nouveau).

Une façon simple de faire ce genre d'entrée est, en supposant [your program] accepte stdin, est:

#!/bin/bash 
echo "1" | [your program] > [logfile1] 
echo "2" | [your program] > [logfile2] 
echo "q" | [your program] > [logfileq] 
+0

Pardonne-moi si j'ai mal compris; Lors de ma lecture originale, je pensais que vous vouliez tester ces fonctionnalités une à la fois (ce que fait ce code), mais il semble que je ne comprenne pas maintenant que j'ai lu les autres réponses fournies. – William

+0

@whoever_voted_down ... Depuis que je suis nouveau ici, pourriez-vous s'il vous plaît me donner quelques conseils sur pourquoi vous avez fait cela? – William

1

-je faire ceci:

 
#! /bin/bash 

printf "1\n2\nq\n" | ./start kernel 
+0

+1 Cette échelle est supérieure à celle d'un document HERE. –

Questions connexes