2008-12-01 7 views
0

Je ne suis pas familier avec les scripts shell, donc je ne suis pas sûr de savoir comment le faire ou si c'est possible. Si vous pouvez me donner des liens ou des conseils, ce serait génial.Premiers pas avec Shell Scripting?

Ce que je veux faire est:

  • Créez un fichier, simple fichier texte EX:

    param1 (RANDOMVALUE)

    Où randomvalue est un nombre aléatoire généré.

  • exécuter un programme avec ce fichier nous venons de créer et de sortie dans un fichier

    ./program filewejustcreated> A

Le programme a déjà été créé et il prend un nom de fichier en tant que paramètre , pas besoin de s'inquiéter pour ça.

  • exécuter un autre programme avec le fichier nous venons de créer, le programme existe déjà et à le mettre dans un fichier

./Anotherprogram filewejustcreated> B

  • un terme diff comamand sur A, B

    diff AB

Afficher ce diff ...

retours

Merci

[Modifier] J'utilise shell: tcsh

+0

S'il vous plaît, pourriez-vous préciser comment créer le premier fichier? Ce fichier est-il la sortie d'un programme qui prend une valeur aléatoire? Doit-il contenir une ligne de texte avec une valeur aléatoire? –

+0

Le fichier créé est simplement associé à un mot et à une valeur aléatoire. –

+0

Je ne pense pas:^| –

Répondre

3

Vous avez presque déjà écrit le script. La seule chose qui manque est le nombre aléatoire; Je vais le faire avec Perl. Voici une solution sale & rapide dans sh (ou bash, je présume que vous êtes sur un système Linux/Unix):

#!/bin/sh 
perl -e 'print "TheWord (", int(rand(1000)), ")\n"' > tempfile 
./program tempfile > A 
./Anotherprogram tempfile > B 
# rm tempfile # this would delete 'tempfile' if uncommented 
diff A B 

maintenant Sauvegarder dans un fichier (par exemple, script.sh) et une coquille exécuter:

chmod +x script.sh 

pour le rendre exécutable et

./script.sh 

pour l'exécuter.

+0

peeve: ce script est un peu plus portable si vous le lancez aveC#!/Bin/sh - il ne fait rien de spécifique à bash. – Dustin

+0

bash a $ RANDOM, de toute façon. Une alternative non-perl serait awk 'BEGIN {print int (rand (1000))}' – ysth

+0

@BobS: Ne vous inquiétez pas du shell que vous utilisez pour exécuter des commandes, la première ligne du script le qualifie de Bourne. Script Shell, qui est un standard sur les systèmes Unix. –

3

Je ne suis pas sûr de la fonction pour générer un nombre aléatoire dans tcsh. Cependant, dans un shell plus commun comme BASH, les références à la variable $RANDOM, génère des nombres aléatoires.

Donc, dans votre script (un script shell BASH ici) shell, le contenu serait:

#Pick the first argument to the call as the file name 
FILE_NAME=shift 
echo "param1 $RANDOM" > $FILE_NAME 
./program $FILE_NAME > $FILE1 
./Anotherprogram $FILE_NAME > $FILE2 
diff $FILE1 $FILE2 
+0

Le shell n'est pas perl: -) Vous voulez réfléchir longtemps et dur sur 'FILE_NAME = shift' ... – Jens

0

script Shell est le plus souvent juste de mettre sur pied des programmes différents de manière à faire le travail. Il y a beaucoup de programmes qui ne font qu'une chose simple et peuvent être combinés pour accomplir des tâches plus importantes dont vous apprendrez à mesure que vous entrez dans le monde des scripts shell. Un exemple de script shell volumineux est perl's Configure script. Dans le premier bit que vous voyez (avec quelques commentaires humoristiques) chat, vrai, sh, rm, test, sed, uname, et grep utilisé.

+0

Tout vrai, mais pas directement pertinent à la question, je pense. –

+0

Il n'y a pas tout ce qui implicite "ce qui est script shell" question là-bas que personne d'autre n'avait encore abordé. – ysth

Questions connexes