Decalage des variables positionnelles
Résolu
Jo
-
Jo -
Jo -
Bonjour à tous ,
Je suis face à un problème tout bête que je n'arrive pas à résoudre.
Je voudrais que les paramètres de la méthode hello soient lus deux par deux.
Lorsque j'exécute le code avec quartes arguments, j'obtiens $#=4 $#=2 $#=0 mais je ne sors jamais de la boucle
Je suis face à un problème tout bête que je n'arrive pas à résoudre.
Je voudrais que les paramètres de la méthode hello soient lus deux par deux.
hello(){
while [ $# -gt 0 ];do
SearchName "$1" "$2"
cp toto.html tata.html
echo "$#"
shift 2
done
}
while test $# -ne 0; do case "$1" in -a) hello "$@" esac done
Lorsque j'exécute le code avec quartes arguments, j'obtiens $#=4 $#=2 $#=0 mais je ne sors jamais de la boucle
A voir également:
- Decalage des variables positionnelles
- Decalage son disney plus - Forum Audio
- Décalage audio vlc android - Forum Lecteurs et supports vidéo
- Recaler le son d'une vidéo avec VLC. - Astuces et Solutions
- Décalage son image youtube - Forum Téléchargement
- Decalage de l'image des vidéos youtube - Forum YouTube
5 réponses
salut,
Il doit y avoir un shift pour la boucle while principale.
Seuls les paramètres passés à la fonction sont décalés.
Edit: il devrait n'y avoir de shift *que* dans la boucle principale.
et passer seulement $1 et $2 à la fonction.
Il doit y avoir un shift pour la boucle while principale.
Seuls les paramètres passés à la fonction sont décalés.
Edit: il devrait n'y avoir de shift *que* dans la boucle principale.
et passer seulement $1 et $2 à la fonction.
J'ai mis un shift dans la boucle while peut etre que tu parles de celle de case/esac
Je ne comprends pas lorsque tu dis passer seulement $1 et $2 à la fonction"
la fonction hello doit prendre 2 ,4 ou 6 arguments.
Je ne comprends pas lorsque tu dis passer seulement $1 et $2 à la fonction"
la fonction hello doit prendre 2 ,4 ou 6 arguments.
En fait, je ne vois pas vraiment d'intérêt à la boucle while principale (case n'initie pas une boucle). Peut-être un simple test suffirait.
Il faudrait que tu nous en dises davantage sur ce que doit faire ton script.
Il faudrait que tu nous en dises davantage sur ce que doit faire ton script.
En fait , je fais un case /esac pour appeler différentes méthodes.
Ma méthode hello prend n arguments ; puis appelle la méthode SearchName qui a besoin de deux arguments $1 $2 et génère un fichier.
Je voudrais pouvoir générer plusieurs fichiers en utilisant $1 et $2 , puis décaler les arguments pour recommencer .
Plutot que un while ,il faut faire un if comme ca : ?
Ma méthode hello prend n arguments ; puis appelle la méthode SearchName qui a besoin de deux arguments $1 $2 et génère un fichier.
Je voudrais pouvoir générer plusieurs fichiers en utilisant $1 et $2 , puis décaler les arguments pour recommencer .
Plutot que un while ,il faut faire un if comme ca : ?
if [ $# -ne 0 ];then
SearchName "$1" "$2"
cp toto.html tata.html
echo "$#"
shift 2
fi
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ah , c'est bon j'ai trouvé pourquoi je bouclais en infini dans la boucle while .
Il fallait mettre un $* derrière -a hello $@ ; shift $#;;
Il fallait mettre un $* derrière -a hello $@ ; shift $#;;
hello(){
while [ $# -gt 0 ];do
SearchName "$1" "$2"
cp toto.html tata.html
shift 2
done
}
while test $# -ne 0;
do
case "$1" in
-a) hello $@;shift $# ;;
esac
done