Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - AdministrationForum - Administration
  • RSS Forum - Administration - 334455Cette discussion

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.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Administration » tytpe d'"assignment" des variables dans un shell script
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
tytpe d'"assignment" des variables dans un shell script
Auteur: NBaH (IP enregistrée)
Date: le 10 février 2008 à 15:50

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

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

Re: tytpe d'"assignment" des variables dans un shell script
Avatar
Auteur: twocats (IP enregistrée)
Date: le 10 février 2008 à 23:13

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

Re: type d'"assignment" des variables dans un shell script
Auteur: NBaH (IP enregistrée)
Date: le 11 février 2008 à 03:17

Bon, alors soit c'est pire que ce que j'ai décrit, soit c'est de pire en pire...image : confus

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.

Re: tytpe d'"assignment" des variables dans un shell script
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 11 février 2008 à 11:20

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"

Re: tytpe d'"assignment" des variables dans un shell script
Auteur: NBaH (IP enregistrée)
Date: le 11 février 2008 à 17:14

Bonjour Oudoubah

NBaH a écrit :

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

Re: tytpe d'"assignment" des variables dans un shell script
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 11 février 2008 à 20:48

Je n'avais pas fait attention à l'url au début image : 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"

Re: type d'"assignment" des variables dans un shell script
Auteur: NBaH (IP enregistrée)
Date: le 11 février 2008 à 21:22

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 ...

Re: type d'"assignment" des variables dans un shell script
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 12 février 2008 à 09:11

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 image: clin d`oeil

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"

Re: type d'"assignment" des variables dans un shell script
Auteur: |/|BaH (IP enregistrée)
Date: le 12 février 2008 à 14:51

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



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

Re: tytpe d'"assignment" des variables dans un shell script
Auteur: |/|BaH (IP enregistrée)
Date: le 12 février 2008 à 14:59

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.



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.