Rechercher : dans
Par :

Redirection de sortie

Dernière réponse le 2 sep 2004 à 07:50:16 carric, le 1 sep 2004 à 12:05:07 
 Signaler ce message aux modérateurs

Salut a tous,

voila dans un script bash schell, je souahite rediriger (recuperer) la reponse d'une commande dans une variable et non pas dans un fichier .
pour le moment j'ai : ls *.tar > LISTE

Le problème est que la réponse ce trouve dans un fichier nommé LISTE et ce qu'i m'interesse est de recuperer cette liste dans une variable pour faire différent traitement de ces fichier.

Merci d'avance

Meilleures réponses pour « redirection de sortie » dans :
[Webmaster] Faire une redirection VoirLes différentes solutions sont présentées de la meilleure (.htaccess) à la moins bonne (JavaScript). Un .htaccess Le .htaccess est à placer dans le répertoire qui doit être redirigé. On applique une redirection de cette façon : RedirectPermanent...
Entrées/sorties : Les flux en C++ VoirEntrées/sorties : les flux en C++ 1. Ouvrir un fichier en lecture 1.1 Ouverture du fichier "donnees.txt" en lecture 1.2 Lecture du contenu de "donnees.txt" 2. Ouvrir un fichier en écriture 2.1 Ouverture du fichier "donnees.txt" en...
Perl - Entrée et sortie standards VoirQu'appelle-t-on entrée standard et sortie standard ? Perl permet d'écrire sur la sortie standard, appelée STDOUT et de lire sur l'entrée standard (STDIN). Il s'agit de deux descripteurs fournis par le système d'exploitation et permettant...
Flux d'Entrées/Sorties standard VoirEntrées/sorties Quand vous programmez, vous avez souvent besoin d’échanger des informations avec l’utilisateur, de consulter ou d’enregistrer des données. La gestion des entrées/sorties est donc particulièrement importante. En programmation...

1

nob, le 1 sep 2004 à 13:08:17

Commande > file
for i in cat file
do
variable($compteur)=$i
((compteur=compteur+1))
done

tu as alors un tableau avec chaque ligne de ton fichier

variable(5) = ta 5eme ligne

sinon meme principe

for i in cat file
do
commandes utilisant la valeur de $i
done

(ksh) en bash il y a peut etre des differences de syntaxes.

Répondre à nob

2

nebulus, le 1 sep 2004 à 13:51:33

Y'a aussi moyen de ne pas passer par une redirection dans un fichier en utilisant des backquotes :

for i in ‘ls *.tar‘
...

ça marche aussi dans une variable :
liste = ‘ls *.tar‘
echo $liste

Hardware: The parts of a computer system that can be kicked

Répondre à nebulus

3

carric, le 1 sep 2004 à 14:15:59

Merci beaucoup
je ve essayer les deux solutions.

@ Bientot

Répondre à carric

4

asevere, le 1 sep 2004 à 19:47:24

Salut,

Bon ces solutions fonctionnent, mais elles restent gourmande (sauf la derniere) pour quelque chose qui au final, se simplifie grandement avec une petite astuce.
Pour commencer, mettre le resultat d'une commande dans une variable peut se faire de deux façons.

var=`commande`  //guillemets inverses pour cenrner l'expression (AltGr+7)
var=$(commande) 
Chacun utilise celle qui lui plait, la seconde reste plus lisible à mon gout :)
Le probleme de cette affectation, c'est que si la commande renvoie plusieures informations (des champs, des lignes, etc.) il n'y aura qu'une seule variable contenant toute ces données.
Il serait plus logique d'avoir un tableau dans ces cas là.

En entourant tout l'expression par des parentheses, la variable sera automatiquement du type tableau:
var=($(commande))
Dans ce cas, Bahs utilise la variable IFS (Internale Field Separator) pour séparer les differents éléments (espace, tabulation, etc.)
Comme dans ton cas, ce sont des lignes que tu souhaites récupérer, il faut mettre '\n' (retour chariot) comme unique séparateur de champ.
IFS=$'\n'
Donc il suffit de deux lignes avant le traitement dans ton script:
IFS=$'\n'
liste=($(ls *.tar))
Voilà, cest une methode de plus, mais qui simplifie pas mal le script :)

@++
 ♫ Il suffirait de presque rien...

Répondre à asevere

5

 carric, le 2 sep 2004 à 07:50:16

Merci asevere je ve aussi essayer ta solution

Répondre à carric