Aller au contenu

creation d'un compteur d'arguments


jakol

Messages recommandés

creation d'un compteur d'arguments

Bonjour,

sous unix, on me demande de créer un programme shell compteMots qui donne à l'utilisateur de saisir des mots puis affiche le nombre de saisie:

$compteMots

entrez les mots: un deux trois quatre

4

j'ai fait le programme ci-dessous mais il ne correspond pas tout à fait. Il semble qu'il faut faire des boucles...donc si vous avez des idées ou le code demandé, merci de me les transmettre.

#!/bin/sh

echo -n "entrez une suite de mots : "

read mot

echo $mot >> mots.txt

wc -w mots.txt

rm -Rf mots.txt

Lien vers le commentaire
Partager sur d’autres sites

tu peux essayer ca :

#!/bin/sh

echo "Entrez une suite de mots"
read mot

echo $mot | wc -w

ou alors en utilisant awk ca passe tout seul aussi, et te permet de "retraiter" les valeurs saisies a la volée

#!/bin/sh

echo "Entrez une suite de mots"
read mot

echo $mot | awk 'BEGIN{n=0} {n+=NF} END {print "Nombre de mots : ",n}'

Lien vers le commentaire
Partager sur d’autres sites

tu peux essayer ca :

#!/bin/sh

echo "Entrez une suite de mots"
read mot

echo $mot | wc -w

ou alors en utilisant awk ca passe tout seul aussi, et te permet de "retraiter" les valeurs saisies a la volée

#!/bin/sh

echo "Entrez une suite de mots"
read mot

echo $mot | awk 'BEGIN{n=0} {n+=NF} END {print "Nombre de mots : ",n}'

Salut merci beaucoup pour les réponses :o)

Au niveau syntaxique que signifie {N=0}{n+=NF} ?

merci encore pour vos réponses

:francais:

Lien vers le commentaire
Partager sur d’autres sites

pour la partie awk

{n=0}

initilialisation d'une variable n (classique quoi)

{n+=NF}

pour awk il existe un certain nombre de variables prédéfinies $0, $1, $2 etc... et NF

$0 représente la ligne 'textuelle' passé en argument a awk : dans l'exemple $0 serait equivalent a $mot

$1 représente le premier champ contenu dans $0 (en gros le premier mot)

$2 le second champ

etc..

et NF represente le nombre de champ contenu dans $0

donc n+=NF ajoute a la valeur de n le nombre de champ, i.e. le nombre de mot, contenu dans $mot

enfin par rapport au code que j'ai passé ont peut simplifier en :

echo $mot | awk '{print NF}'

mais avec l'autre exemple ca permetais de voir a quel endroit tu pouvais placer du code suplementaire pour faire du traitement sur les mots.

Lien vers le commentaire
Partager sur d’autres sites

mieux ? :transpi:

bon sinon c'est sur que echo $# est la méthode la plus simple d'afficher le nombre d'argument passé a un scipt shell, mais ca ne répondait pas vraiment au besoin expliqué dans son premier post (c'est vrai que le titre du thread semble un peu trompeur)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...