# Je suis bloqué sur un petit script de debutant

**URL:** <https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180>\
**Category:** Programmation\
**Created:** [Septembre 17, 2019, 1:29 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180 "2019-09-17T13:29:56Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![morpheus](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ce73a5/32.png) [@morpheus](https://www.debian-fr.org/u/morpheus)\
**Post date:** [Septembre 17, 2019, 1:29 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/1 "2019-09-17T13:29:56Z")

</div>

Salut tout le monde , je me lance sur de petits scripts en bash , et je suis déjà bloqué a ma première tentative . Depuis hier matin je galère a trouver la solution .

je voudrais simplement extraire le nombre de mots utilisant chaque lettre de l’alphabet de A à Z . le script devra prendre comme paramètre le nom du fichier à analyser .

```bash
#!/bin/bash

var2=`egrep [A] && wc -l ~/Bureau/bin/dicotoutcourt`

if [-z $1] || [$1 != 'dicotoutcourt']; then
echo " tu n'as pas taper le parametre ! "
else
echo "$var2"
fi

```

ce qui me rends rien , et je ne vois plus mon nom@hoste$ comme si le script faisait quelque chose mais ne me renvoyait rien 😕

comment faire pour affichier le resultat de var 2 ? ( je sais que je dois le faire de [a-z] mais s’était juste pour savoir si la méthode marchait . ( ou courait ?..) si vous auriez une suggestion je suis preneur , juste une piste :x

---

<div class="post-metadata">

**Author:** ![morpheus](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ce73a5/32.png) [@morpheus](https://www.debian-fr.org/u/morpheus)\
**Post date:** [Septembre 17, 2019, 3:57 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/2 "2019-09-17T15:57:52Z")

</div>

Re ! Je crois bien avoir trouvé mouahahah

```bash
#!/bin/bash

if [-z $1] || [$1 != 'dicotoutcourt']; then

echo " tu n'as pas tapé le paramètre ! "

else
var2=`egrep [A] ~/Bureau/bin/dicotoutcourt && wc -l ~/Bureau/bin/dicotoutcourt`
echo "$var2"

fi

```

me rend : 323577 /user./user./user./dicotoutcourt 🙂 merci quand même  
edit : j’ai rien dit , c’est juste le wc -l que j’ai obtenu , pas le egrep [A] . Je continu mes recherches .  
Edit : c’est bon , j’ai regardé le man et vu qu’il fallait ajouté l’option -c a grep pour qu’il puisse compter le nombre d’occurence … soucis réglé . vais fumer la clope de la victoire du débutant .

j’reviens vite pour un autre probleme de noob . 😃

:corrigé :

```bash
#!/bin/bash

if [-z $1] || [$1 != 'dicotoutcourt']; then

echo " tu n'as pas taper le parametre ! "

else
var1=` grep -o -c A ~/Bureau/bin/dicotoutcourt && wc -l ~/Bureau/bin/dicotoutcourt `

echo "$var1"

fi

```

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Septembre 18, 2019, 8:46 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/3 "2019-09-18T08:46:59Z")

</div>

Bonjour,

quelques remarques, à la volée:

- au début, tu fais un test sur l’argument ($1) pour regarder s’il est vide, ou s’il n’est pas égal à ‘dicotoutcourt’. Mais tu ne fais jamais référence à cet argument dans la suite du script.
- Ta var1 mélange les choses:  
-si tu veux compter le nombre d’occurrences de la lettre A dans le fichier dicotoutcourt: `var1=$(grep -c A dicotoutcourt)`.  
-si tu veux compter le nombre de mots qui contiennent la lettre A (pour ne pas compter 3 fois AAA par exemple) il va falloir passer par une expression régulière: `var1=egrep "\b\w*A+\w*\b" dicotoucourt`

Note: on considère que la syntaxe `variable=<backquote>commande<backquote>` est obsolète, et on lui préfère la syntaxe `variable=$(commande)`. Je n’ai jamais regardé pourquoi.

En tout cas, enlève cette commande wc de ta variable, elle ne sert à rien à part calculer le nombre total de lignes dans ton fichier (et à fausser ta variable).

Sinon, c’est très bien d’avoir pensé à lire `man grep` et d’avoir repéré l’option `-c`, je vois beaucoup de personnes qui utilisent des trucs comme `grep $PATTERN $FICHIER | wc -l` au lieu d’un `grep -c $PATTERN $FICHIER` (ou pire, les gens qui écrivent `cat $fichier | grep $pattern` 😪 )

---

<div class="post-metadata">

**Author:** ![morpheus](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ce73a5/32.png) [@morpheus](https://www.debian-fr.org/u/morpheus)\
**Post date:** [Septembre 18, 2019, 11:06 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/4 "2019-09-18T11:06:10Z")

</div>

Mes re-salutation Sputnik .

pour ce qui est des Backquote , incroyable . je te disais justement sur l’autre topic que tu les avais oublié et je comprenais pas pourquoi tu metais un $ au début , mais là je comprends bien mieux , c’est pas facile de trouver ( pas d’apprendre , mais de trouver ) sur le net des personnes ou des ressources ( ou je ne sais pas du tout chercher malheureusement ) qui expliquent toutes ces choses là . j’espère que je suis pas en retard , je viens de savoir ça ☹ .

pour le grep -E ou le egrep … j’avais tout essayé snifff mdrr , jte jure [A-Z] [A…Z] [A.Z] et tout plein de truck , mais aucuns site n’expliquait que pour faire des “Et” dans grep -E il fallait utilisé la syntaxe '\ \ \* + \*" . maintenant je sais .

qu’est ce que je peux dire de plus à par remercier ton analyse trés pertinente et corroborée .

: édit : tu m"as bien fait rire avec le Cat $fichier | grep $pattern car je le faisais aussi au début , par manque de connaissances . on apprend n’importe quoi sur le net 😕  
édit2: Pour les variables , le “$” remplaçant les backquotes , ça s’applique seulement aux variables ? et la syntaxe est toujour $+(commande) ? merci de prendre de ton temps .

---

<div class="post-metadata">

**Author:** ![tfc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tfc/32/6424_2.png) [@tfc](https://www.debian-fr.org/u/tfc)\
**Post date:** [Septembre 18, 2019, 4:33 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/5 "2019-09-18T16:33:41Z")

</div>

Salut morpheus,

ça ne changera pas grand chose au script, mais accessoirement avec “Tu”, “tapé” et “paramètre” ça ne devrait pas lui faire de mal non plus. 😉

---

<div class="post-metadata">

**Author:** ![morpheus](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ce73a5/32.png) [@morpheus](https://www.debian-fr.org/u/morpheus)\
**Post date:** [Septembre 18, 2019, 4:41 UTC](https://www.debian-fr.org/t/je-suis-bloque-sur-un-petit-script-de-debutant/80180/6 "2019-09-18T16:41:29Z")

</div>

Salut tfc , effectivement ça piquera moins les yeux 🤣 . Bien vue ^^
