Problème paramètre sortie procédure script bash

Problème paramètre sortie procédure script bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-01-2015 à 16:30:56    

Bonjour,
 
J'ai un problème quand j'essaye de mettre une valeur de sortie à une procédure, pour une valeur d'entrée là tout va bien.
Je n'ai pas trouvé d'informations à ce sujet sur le net.
 
Voici mon code :
 

Code :
  1. #! /bin/bash
  2. lecture_clavier()
  3. {
  4.     read choix
  5.     $1=$choix
  6. }
  7. lecture_clavier valeur
  8. echo $valeur


 
En sortie j'obtiens ce message d'erreur :

Code :
  1. $ sudo bash test.sh
  2. 3
  3. test.sh: line 13: valeur=3: command not found


 
Savez-vous comment passer un paramètre en sortie ?  
 
Merci

Reply

Marsh Posté le 03-01-2015 à 16:30:56   

Reply

Marsh Posté le 03-01-2015 à 17:59:53    

Comme ceci
 

Code :
  1. #!/bin/bash
  2. lecture_clavier()
  3. {
  4. local choix
  5. read choix
  6. echo "$choix"
  7. }
  8. valeur="$(lecture_clavier)"
  9. echo "$valeur"

Message cité 1 fois
Message édité par agentsteel le 03-01-2015 à 18:01:23

---------------
http://agentoss.wordpress.com/
Reply

Marsh Posté le 03-01-2015 à 18:18:12    

agentsteel a écrit :

Comme ceci
 

Code :
  1. #!/bin/bash
  2. lecture_clavier()
  3. {
  4. local choix
  5. read choix
  6. echo "$choix"
  7. }
  8. valeur="$(lecture_clavier)"
  9. echo "$valeur"



 
Merci !
 
Donc ça veut dire qu'il ne peut y'avoir qu'un seul paramètre de sortie ?
Au contraire des paramètres d'entrées qui peuvent être plusieurs ($1, $2, ...)

Reply

Marsh Posté le 03-01-2015 à 19:36:35    

Avec la même logique, tu peux tout à fait stocker plusieurs valeurs en sortie, dans un tableau (array).
 
Sinon passer par des variables globales (moins élégant :D )


---------------
http://agentoss.wordpress.com/
Reply

Marsh Posté le 03-01-2015 à 19:49:34    

Un peu de lecture sur les fonctions Bash
 
http://abs.traduc.org/abs-fr/ch24.html


---------------
http://agentoss.wordpress.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed