jakol Posté(e) le 20 avril 2009 Partager Posté(e) le 20 avril 2009 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 More sharing options...
sarx Posté(e) le 20 avril 2009 Partager Posté(e) le 20 avril 2009 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 More sharing options...
jakol Posté(e) le 20 avril 2009 Auteur Partager Posté(e) le 20 avril 2009 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
sarx Posté(e) le 21 avril 2009 Partager Posté(e) le 21 avril 2009 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 More sharing options...
lorinc Posté(e) le 23 avril 2009 Partager Posté(e) le 23 avril 2009 echo $# qui dit mieux ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
sarx Posté(e) le 24 avril 2009 Partager Posté(e) le 24 avril 2009 mieux ? 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 More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.