Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
tytpe d'"assignment" des variables dans un shell script
Envoyé par: NBaH

Bonjour

Je suis sûr que, vous, vous profitez de cette journée printanière.
Pour ma part, je suis retenu dans un endroit sombre et glacial (les limbes de mon ignorance) par un shell script qui me déteste.

Je n'arrive pas, au sein d'un même script, à modifier la valeur d'une même variable 'var01'.
Je m'explique :
---j'exécute mon script...
...il me demande la valeur d'une variable 'read var01' que je lui fournit...
[^](eh oui, je n'ai pas encore rédigé le script télépathe qui saura ce que je veux faire)[/^]
...je ne sors pas de mon shell...
...le script reprend depuis le début (parceque c'est prévu ainsi)...
...et donc me demande à nouveau la valeur de la variable par la même commande 'read var01',
...je change la valeur de cette variable (que je crois) parceque sinon ça n'a pas de sens,
...mais (sinon je ne serai pas là) 'var01' conserve la valeur donnée au "premier passage" ¿

Voilà, je vous remercie de votre attention, et de vos conseils, et atttend impatiemment de vos nouvelles... ce faisant je me replonge dans le man de bash
[v]
Pour lire ce qui déjà rédigé du script : [membres.lycos.fr] La variable qui pose problème c'est 'tit'.[/v]

Poste le Sunday 10 February 2008 15:50:30
Répondre     Citer    
Re: tytpe d'"assignment" des variables dans un shell script
Envoyé par: twocats

Par exemple pour la fonction ecouter :
ecouter()
{
if [[ -f $titre ]]
then
     aplay $titre
else
     echo "Ce morceau n'existe pas!"
     sleep 5
fi
unset tit
dbut
}
Attention je n'ai pas vérifié.

-------------------
La réponse est 42

Poste le Sunday 10 February 2008 23:13:48
Répondre     Citer    
Re: type d'"assignment" des variables dans un shell script
Envoyé par: NBaH

Bon, alors soit c'est pire que ce que j'ai décrit, soit c'est de pire en pire...?-(

En fait, il me semble que les autres fonctions du script n'ont pas connaissance de la valeur de la variable reçue par 'read tit' dans 'dbut()'. Car, si je ne met pas 'unset tit'* , que je quitte le script, 'echo $tit' retourne la valeur que je lui avait assignée lors de la précédente éxécution du scipt. Et quand j'éxécute à nouveau le script c'est la valeur définie lors de la précédente éxécution qui est transmise aux fonctions. Bon, plus maintenant à cause de 'unset tit'.

...

* merci twocats, ça fonctionne bien. Pour l'instant, je l'ai placée avant de sortir du script. Mais il me semble qu'à la fin de ecoute() est un emplacement aussi judicieux.

Poste le Monday 11 February 2008 03:17:31
Répondre     Citer    
Re: tytpe d'"assignment" des variables dans un shell script
Envoyé par: oudoubah

Ce serait plus simple pour t'aider si tu nous fournis ton script (ou une partie un peu dépouillée).

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Monday 11 February 2008 11:20:17
Répondre     Citer    
Re: tytpe d'"assignment" des variables dans un shell script
Envoyé par: NBaH

Bonjour Oudoubah

Citation
NBaH
Pour lire ce qui déjà rédigé du script : [membres.lycos.fr] La variable qui pose problème c'est 'tit'.

Poste le Monday 11 February 2008 17:14:31
Répondre     Citer    
Re: tytpe d'"assignment" des variables dans un shell script
Envoyé par: oudoubah

Je n'avais pas fait attention à l'url au début :ange:

Ta variable titre est utilisée tout au long du script, mais n'est affectée qu'au début, donc elle ne change pas.

Tu dois réaffecter
titre=$defrep/$tit.wav
après chaque changement de valeur de tit.

Second élément, tu peux rendre ton code plus propre :
dans ta fonction dbut, mieux vaut boucler sur la valeur de quid et quitter lorsque quid=q plutôt que de lancer une fonction a qui lance une fonction b qui relance a....
Par conséquent, tes autres fonctions ne doivent plus appeler dbut.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Monday 11 February 2008 20:48:52
Répondre     Citer    
Re: type d'"assignment" des variables dans un shell script
Envoyé par: NBaH

Merci Oudoubah

Les changements ont été effectués, et donc avant l'appel des fonctions "session" et "ecouter" j'ai inséré la réaffectation, et opère avec succès.

Par contre, je ne comprend ta deuxième remarque : dbut() fait office de menu principal, puisque je peux vouloir réécouter le morceaux que je viens d'enregistrer, ou écouter un autre morceaux, ou ...

Poste le Monday 11 February 2008 21:22:11
Répondre     Citer    
Re: type d'"assignment" des variables dans un shell script
Envoyé par: oudoubah

Une des façon de faire qui évite de relancer à chaque fois une fonction serait (version simplifiée):

dbut() {
   quid=""
   while [ "$quid" != "q" ] ; do
      echo -n "Choix :"
      read quid
      case "$quid" in
         [1rR]) .... ;;
         [2eE]) .... ;;
         [3qQ]) quid=q ;;
         *) echo "Commande inconnue" ;;
      esac
   done
}

Et tu supprimes les appels à dbut dans les autres fonctions.
Tu peux même dans ce cas supprimer dbut et mettre son corps là où tu appelles dbut.

Cela ne modifiera pas le fonctionnement de ton script. C'est juste une meilleure pratique ;-)

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Tuesday 12 February 2008 09:11:56
Répondre     Citer    
Re: type d'"assignment" des variables dans un shell script
Envoyé par: |/|BaH

Pour ce que j'ai testé de la nouvelle rédaction de ce script (je ne vais pas le torturer tout de suite il a déjà reçu une bonne correction), il ne reste guère qu'une ou deux erreur du même acabit que je devrais pouvoir régler.
Sinon, "I'll be back..."

Encore merci oudoubah



[v]désolé d'avoir posté dans Administration au lieu de Développement, je ferai plus attention dorénavant[/v]

Poste le Tuesday 12 February 2008 14:51:22
Répondre     Citer    
Re: tytpe d'"assignment" des variables dans un shell script
Envoyé par: |/|BaH

J'oubliais, la version pas-encore-définitive-mais-presque de ce script est disponible ici [membres.lycos.fr].
Bien sûr, vos commentaires et vos conseils pour l'améliorer sont les bienvenus.

Poste le Tuesday 12 February 2008 14:59:38
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
tytpe d'"assignment" des variables dans un shell script
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons