# \[résolu\]script verifiant le nombre d'arguments donnés

**URL:** <https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286 "2016-02-20T17:10:57Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![jakol](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/f0a364/32.png) [@jakol](https://www.debian-fr.org/u/jakol)\
**Post date:** [Février 20, 2016, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/1 "2016-02-20T17:10:57Z")

</div>

script verifiant le nombre d’arguments donnés

Bonjour,

je suis à la recherche d’un script qui permettrait de vérifier le nombre d’arguments passés lors de l’appel est égal à 4 et écrit le message “correct” ou "erreur"  
j’ai déjà essayé un bon de code avec case mais rien de bon:

#!/bin/bash

case $2 in

$1$2$3$4) echo “juste”;;  
\*) echo “erreur”;;  
esac

Merci pour vos futures réponses

---

<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, 5:10 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/2 "2016-02-20T17:10:57Z")

</div>

$# te renvoie le nombre de paramètres.  
(man bash, section “Paramètres spéciaux”)

---

<div class="post-metadata">

**Author:** ![usinagaz](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/ecae2f/32.png) [@usinagaz](https://www.debian-fr.org/u/usinagaz)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/3 "2016-02-20T17:12:17Z")

</div>

ce qui donne ? :  
if [$# -ne 4]; then echo “err” && exit; n’est-ce-pas ?

---

<div class="post-metadata">

**Author:** ![thialme](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/50afbb/32.png) [@thialme](https://www.debian-fr.org/u/thialme)\
**Post date:** [Février 20, 2016, 5:13 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/4 "2016-02-20T17:13:24Z")

</div>

```auto
[$# -ne 4] && echo "err"; exit 0;
```

---

<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, 5:13 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/5 "2016-02-20T17:13:25Z")

</div>

`[$# -ne 4] && echo "err" && exit 1 >&2 `pour sortir avec un non nul en cas d’erreur, ne pas sortir si c’est bon, et envoyer les messages d’erreur sur la sortie d’erreur au lieu de la sortie standard.

---

<div class="post-metadata">

**Author:** ![gbx](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@gbx](https://www.debian-fr.org/u/gbx)\
**Post date:** [Février 20, 2016, 5:14 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/6 "2016-02-20T17:14:54Z")

</div>

t’es sur que la redirection prend toute la ligne en compte ?  
il me semble que seul le “exit 1” sera redirige

auquel cas il faudrait faire

```auto

```

si c’est pas le cas, toutes mes excuses. J’ai pas de shell sous la main pour verifier.

---

<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, 5:14 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/7 "2016-02-20T17:14:54Z")

</div>

Sisi la redirection prend tout. Je suis certain, même si je n’ai pas testé.  
Ne serait ce que parcequ’elle rompt le flux: tu ferais comment pour envoyer la sortie de la première commande dans un fichier et celle (absente bien sûr) de l’exit dans un autre.  
Sûr: pas besoin de sous shell.

---

<div class="post-metadata">

**Author:** ![gbx](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@gbx](https://www.debian-fr.org/u/gbx)\
**Post date:** [Février 20, 2016, 5:14 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/8 "2016-02-20T17:14:55Z")

</div>

[quote=“mattotop”]Sisi la redirection prend tout. Je suis certain, même si je n’ai pas testé.  
Ne serait ce que parcequ’elle rompt le flux: tu ferais comment pour envoyer la sortie de la première commande dans un fichier et celle (absente bien sûr) de l’exit dans un autre.  
Sûr:&nbsp;pas besoin de sous shell.[/quote]

Soit. J’ai fait un test avec ce que j’ai sous la main: le shell de microsoft dispo avec mks toolkit (pas de commentaires svp c’est assez dur a vivre comme ca):  
je met ton code dans [essai.sh](http://essai.sh) et je lance la commande  
$sh [essai.sh](http://essai.sh) \> log  
il n’y a rien qui apparait dans la console et log contient “err”, c’est a dire que l’echo va dans la sortie standard  
avec mon code et la meme commande, “err” est affiché dans la console et log est vide

Encore une fois les trucs microsoft ca marche jamais pareil. Et moi qui etais tout content de trouver un truc utile sous win, tu parles va falloir se retaper la doc 😠

sur ce, bonne nuit

---

<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, 5:14 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/9 "2016-02-20T17:14:55Z")

</div>

je viens de faire la même vérif en bash sous nux, et j’ai bien le resultat attendu:

`roc@roc:~$ echo "[$# -ne 4] && echo "err" && exit 1 >&2 >test1.log" >test1
roc@roc:~$ rm test*.log
roc@roc:~$ echo "([$# -ne 4] && echo "err" && exit 1) >&2 >test2.log" >test2
roc@roc:~$ sh test1
err
roc@roc:~$ sh test2
roc@roc:~$ cat test1.log
roc@roc:~$ cat test2.log
err
`

---

<div class="post-metadata">

**Author:** ![gbx](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@gbx](https://www.debian-fr.org/u/gbx)\
**Post date:** [Février 20, 2016, 5:16 UTC](https://www.debian-fr.org/t/resolu-script-verifiant-le-nombre-darguments-donnes/12286/10 "2016-02-20T17:16:11Z")

</div>

> [@](#):
>
> je viens de faire la même vérif en bash sous nux, et j’ai bien le resultat attendu

Bon ben toutes mes excuses, ca m’apprendra a utiliser le shell version microsoft 😃
