Posté(e) le 20 avril 200916 a 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
Posté(e) le 20 avril 200916 a 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}'
Posté(e) le 20 avril 200916 a Auteur 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
Posté(e) le 21 avril 200916 a 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.
Posté(e) le 24 avril 200916 a 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)
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.