Comment peut on recuperer les resultat d'une cmde dans des variable ?

Comment peut on recuperer les resultat d'une cmde dans des variable ? - Linux et OS Alternatifs

Marsh Posté le 18-04-2005 à 01:27:00    

j'etais persuadé que l'on pouvais recupéré le resultat d'une commande ls par exemple en renvoyant le resultat à read  
 
ls | read a b c d
 
mais les variables sont vides.
 
Comment fais t'on pour recuperer sans utiliser une boucle ? (for par exemple)

Reply

Marsh Posté le 18-04-2005 à 01:27:00   

Reply

Marsh Posté le 18-04-2005 à 02:07:52    

a=`ls`
echo $a
Ca devrait le faire ;)


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
Reply

Marsh Posté le 20-04-2005 à 00:52:44    

lol c'est pas que je voulais savoir pour l'instant. En fait pour me depanner, j'ai fais le bourrin en utilisant des cut  
 
a=$(ls | cut -d " " -f 1)  
b=$(ls | cut -d " " -f 2)
c=$(ls | cut -d " " -f 3)
 
en fait c'est pas pour ls mais cela revient au meme. Je pense qu'avec mon cut, je pense que je serais un peu mieux compris.

Reply

Marsh Posté le 20-04-2005 à 10:44:16    

Code :
  1. { read a; read b; read c; } < <( ls )


Avec bash, pas compatible sh
 
1. ls relié à un pipe affiche un fichier par ligne
 
2. dans le cas de "ls | read a", je pense qu'on a deux "instances" d'éxécution de shell reliées en pipe. La variable a est donc locale à un "sous-shell" et sa valeur n'est pas préservée quand tu sors du pipe.
 
pour t'en convaincre fait un :  

Code :
  1. a=""; ls | { read a; echo dans pipe: $a; }; echo ext pipe: $a


a sera non nul dans le pipe, et nul à l'extérieur.


Message édité par dainybei le 20-04-2005 à 10:54:47
Reply

Sujets relatifs:

Leave a Replay

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