Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
993 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recuperation resultat dans variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperation resultat dans variable

n°1568523
deck10
Posté le 01-06-2007 à 12:02:49  profilanswer
 

Bonjour,
voici le problème que je n'arrive pas à résoudre:
 
Je suis dans un répertoire et je récupère les 2 derniers fichiers créés avec cette commande:
ls -t *.txt | head -2
 
Ca me donne ca comme résultat:
fic1.txt
fic2.txt
 
Maintenant, dans la suite de mon script, je voudrai utiliser ce résultat en mettant fic1.txt dans la variable a et fic2.txt dans la variable b. (Pour la suite, pouvoir faire un diff, par exemple).
Mais je n'arrive pas à le faire.
Si quelqu'un peut m'aider?
Merci

mood
Publicité
Posté le 01-06-2007 à 12:02:49  profilanswer
 

n°1568589
aigles
Posté le 01-06-2007 à 13:54:52  profilanswer
 

Voici une façon de faire :
 
$ ls -t *.txt | head -2
tbl.txt
cnv.txt
$ fichiers=$(ls -t *.txt | head -2)
$ echo $fichiers | read a b
$ echo $a
tbl.txt
$ echo $b
cnv.txt
$  
 
et une autre (toujours avec read) :
 
$ ls -t *.txt | { read a; read b; }
 
une dernière :
 
$ set -- $(ls -t *.txt | head -2)
$ a=$1
$ b=$2  
 
Tu peux aussi faire directement le diff :
 
$ diff $(ls -t *.txt | head -1)
 
Jean-Pierre.

n°1568611
deck10
Posté le 01-06-2007 à 14:25:48  profilanswer
 

merci :)

n°1568834
matafan
Posté le 01-06-2007 à 20:56:17  profilanswer
 

Ouais alors le coup du read, j'avais pensé en parler, puis je me suis dit c'est donner des verges pour se faire battre. Pipe, sous-shell, tout ça... Avec la pluspart des shells (en fait tous sauf ksh je crois), ça ne marchera pas. a et b sont sont créés dans un sous-process, donc dans ton script tu ne les verra pas. Il y a moyen de contourner, par exemple en mettant entre parenthèse toute la partie à droite du pipe, jusqu'à l'endroit où tu utilises a et b. Mais bon c'est compliqué.

n°1568855
aigles
Posté le 01-06-2007 à 22:24:34  profilanswer
 

matafan a écrit :

Ouais alors le coup du read, j'avais pensé en parler, puis je me suis dit c'est donner des verges pour se faire battre. Pipe, sous-shell, tout ça... Avec la pluspart des shells (en fait tous sauf ksh je crois), ça ne marchera pas. a et b sont sont créés dans un sous-process, donc dans ton script tu ne les verra pas. Il y a moyen de contourner, par exemple en mettant entre parenthèse toute la partie à droite du pipe, jusqu'à l'endroit où tu utilises a et b. Mais bon c'est compliqué.


Je travaille habituellement avec ksh où cela fonctionne trés bien.
 
Je viens faire le test sous bash (cygwin, que j'utilise depuis peu sur mon PC chez moi) et effectivement cele ne fonctionne pas.
Cependant, avec bash il est possible d'utiliser la forme <<< de la redirection (je viens de découvrir ça en lisant le man):
 
$ read a b <<<$(ls -t *.txt|head -2)
 
 
Jean-Pierre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recuperation resultat dans variable

 

Sujets relatifs
Ressource id#3 / Undefined variable[VBA E]problem avec un type de variable
envoyer un texte dans une variable[vba] variable Path dans SaveAs(...)
connaitre le nom d'une variableComment envoyer le résultat vers un fichier et garder à l'écran ?
Problème entre argument + fonction + variable + espace[RESOLU]Récupération des données d'un fichier .txt
exec + afficher resultat script bashExec + afficher resultat script bash
Plus de sujets relatifs à : recuperation resultat dans variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR