Redirection de sortie
Fermé
carric
Messages postés
71
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
23 juin 2006
-
1 sept. 2004 à 12:05
carric Messages postés 71 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 23 juin 2006 - 2 sept. 2004 à 07:50
carric Messages postés 71 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 23 juin 2006 - 2 sept. 2004 à 07:50
A voir également:
- Redirection de sortie
- Airpods 3 date de sortie - Guide
- Windows 12 date de sortie - Guide
- Iphone 14 date de sortie - Guide
- Office 2024 date de sortie - Guide
4 réponses
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
1 sept. 2004 à 19:47
1 sept. 2004 à 19:47
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.
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:
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.
@++
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...
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.
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.
nebulus
Messages postés
47
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2004
4
1 sept. 2004 à 13:51
1 sept. 2004 à 13:51
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
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
carric
Messages postés
71
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
23 juin 2006
2
1 sept. 2004 à 14:15
1 sept. 2004 à 14:15
merci beaucoup
je ve essayer les deux solutions.
@ Bientot
je ve essayer les deux solutions.
@ Bientot
2 sept. 2004 à 07:50