# débutant : utilisation du for

**URL:** <https://www.debian-fr.org/t/debutant-utilisation-du-for/17097>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097 "2016-02-20T18:40:53Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![thenano](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/f08c70/32.png) [@thenano](https://www.debian-fr.org/u/thenano)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/1 "2016-02-20T18:40:53Z")

</div>

salut,  
bon , c’est la fête, j’écris mon premier script shell!  
Jai du mal a comprendre la syntaxe du for:  
j’essaye de faire ceci:

```auto

```

ou $1 est un chemin vers une rep passé en parametre a une fonction  
je voudrais que j prenne tous les noms des fichiers contenus dans ce dossier.  
Comment faire?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/2 "2016-02-20T18:40:54Z")

</div>

[code]for i in `ls "$1"/*` do

# ton traitement[/code]

la variable locale $i prendras tour à tour la valeur de chaque éléments de la liste

```auto

```

Là tu reconnais une commande classique (ls), elle est entre ` pour être exécuté avant le for et donc être remplacé par la liste des fichiers.

Tu va avoir des problèmes pour les fichiers qui contiennent des espaces. Pour le résoudre il faut modifier la variable $IFS si je ne me trompe pas. Cette variable définie les caractères séparateur d’une liste. Cherche sur internet pour plus d’information, je ne veux pas dire de bêtises et être ensuite indexé par google.

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/3 "2016-02-20T18:40:55Z")

</div>

`ls "$1"/*` peut aussi s’écrire $(ls “$1”/\*) si je me souviens bien.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/4 "2016-02-20T18:40:57Z")

</div>

> [@](#):
>
> `ls "$1"/*` peut aussi s’écrire $(ls “$1”/\*) si je me souviens bien.

En effet avec l’avantage pour le $() qu’il est possible d’en imbriquer plusieurs.

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/5 "2016-02-20T18:40:58Z")

</div>

A noter que ce genre d’ “eval” est à utiliser trés prudemment dans un script destiné à être utilisé avec des droits root (en suid ou avec une autorisation sudo) quand une partie de ce qui est évalué vient comme paramètre de ce script, parcequ’une petite erreur de conception, et un malicieux bonhomme peut injecter son code à lui dans l’évaluation et executer des choses avec les droits de lancement du script.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/6 "2016-02-20T18:40:58Z")

</div>

Les scripts shell c’est pas recommandé pour des usages où la sécurité au sein de la machine est importante.

Une règle simple consiste à utiliser les argument uniquement entre parenthèse.

---

<div class="post-metadata">

**Author:** ![thenano](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/f08c70/32.png) [@thenano](https://www.debian-fr.org/u/thenano)\
**Post date:** [Février 20, 2016, 6:40 UTC](https://www.debian-fr.org/t/debutant-utilisation-du-for/17097/7 "2016-02-20T18:40:59Z")

</div>

oef, dans mon cas, la sécurité n’est pas très importante 😛  
le script ne serait pas exécuté en root.  
En fait, ce que je n’avais pas compris c’est que le shell  
a besoin du caractère / pour ne pas qu’il considère \* comme  
le caractère ‘\*’ mais bien comme un joker.  
Merci en tout cas, je vais continuer cela.
