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

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

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

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

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

[ $# -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.

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

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

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.

[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: 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 et je lance la commande
$sh 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 :angry:

sur ce, bonne nuit

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

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