# Bash et passage de parametre

**URL:** <https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264>\
**Category:** Programmation\
**Tags:** bash\
**Created:** [Octobre 10, 2022, 4:43 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264 "2022-10-10T16:43:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mikeX](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/a88e57/32.png) [@mikeX](https://www.debian-fr.org/u/mikeX)\
**Post date:** [Octobre 10, 2022, 4:43 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264/1 "2022-10-10T16:43:28Z")

</div>

Bonjour  
Une question où je n’arrive pas à trouver de réponse  
Le script trouve.sh

> ```
> #!/bin/bash
> find ~/ -maxdepth 2 -iname "$1" -type f
> 
> ```

Ne renvoie pas la même chose que la ligne de commande identique  
Par exemple

> ```
> $ ls -R [mM]*
> moi.doc
> Me.doc
> Meilleur.doc
> /monrep/monfichier.html
> /monrep/monfichier1.html
> /monrep/monfichier2.html
> /monrep/Fichier.html
> $trouve.sh M*
> $
> $trouve.sh M*.*
> $Meilleur.doc
> $~/monrep/monfichier2.html
> 
> ```

Pourtant

> ```
> $find ~/ -maxdepth 2 -iname "M*" -type f
> $moi.doc
> $Me.doc
> $Meilleur.doc
> $~/monrep/monfichier.html
> $~/monrep/monfichier1.html
> $~/monrep/monfichier2.html
> 
> ```

Il semble que seule la dernière occurence de chaque répertoire s’affiche  
Et le paramètre «&nbsp;$1&nbsp;» n’est pas interprété de la même façon que celui de la ligne de commande.

Comment corriger ce comportement ?

MERCI

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Octobre 10, 2022, 7:07 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264/2 "2022-10-10T19:07:53Z")

</div>

«&nbsp;M\*&nbsp;» est développé avant d’être passé au script, et $1 ne contient que le premier élément.

---

<div class="post-metadata">

**Author:** ![mikeX](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/a88e57/32.png) [@mikeX](https://www.debian-fr.org/u/mikeX)\
**Post date:** [Octobre 11, 2022, 5:05 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264/3 "2022-10-11T17:05:54Z")

</div>

Merci bcp pour cette réponse  
Mais ca n’explique pourquoi je n’ai qu’un seul résultat  
Je vais essayer un alias pour voir

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Octobre 11, 2022, 6:29 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264/4 "2022-10-11T18:29:36Z")

</div>

> [@mikeX](#):
>
> Mais ca n’explique pourquoi je n’ai qu’un seul résultat

Au contraire, ça explique pourquoi : $1 ne contient qu’un seul nom de fichier donc la recherche ne peut trouver que les fichiers ayant ce nom..

---

<div class="post-metadata">

**Author:** ![linuxpit](https://www.debian-fr.org/user_avatar/www.debian-fr.org/linuxpit/32/12131_2.png) [@linuxpit](https://www.debian-fr.org/u/linuxpit)\
**Post date:** [Octobre 24, 2022, 8:01 UTC](https://www.debian-fr.org/t/bash-et-passage-de-parametre/87264/5 "2022-10-24T08:01:16Z")

</div>

Salut,  
En effet c’est totalement normale comme dis pascale ton expression est traduite avant la passer en argument ce qui provoque pas le résultat que tu recherches.  
tu peux protéger tes arguments en les protégeant

```auto
Avec des guillemets " " double => afin de préserver l interprétation des variables 
ou des ' ' simple => en cas ou tu veux du strict

```

ça devrait rouler sans souci après
