Posted April 20, 200916 yr 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
April 20, 200916 yr 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}'
April 20, 200916 yr Author 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
April 21, 200916 yr 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.
April 24, 200916 yr 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)
Archived
This topic is now archived and is closed to further replies.