redirection

Le
le pierre
Bonjour,

j'ai une boucle for en AIX (ksh) et je souhaite rediriger la sortie en
fonction des elements de ma liste :

typiquement :


export LISTE=a b c d e f

for i in $LISTE
do
echo "bonjour"
done > ${i}.log



voila en gros ce que je voudrais faire, mais ca !!ca ne marche pas,
pourquoi et que dois je faire ?


merci
Vos réponses Page 3 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vincent Lefevre
Le #755421
Dans l'article Olivier Miakinen
5.12.5 Attention

Quand on redirige ou que l'on pipe [sic] les entrées-sorties ou que l'on
met dans l'arrière plan une telle structure, celle-ci est exécutée dans
un sous-shell. [...]

Donc, si ce que je suppose est vrai,
{ ... } > ${i}.log
est équivalent à
( ... ) > ${i}.log
à cause de la redirection de stdout vers un fichier.


C'était vrai avec le Bourne shell:

bar:~> sh
$ unset blah
$ { echo 1; blah; echo 2; } > /dev/tty
1
2
$ echo $blah

$

mais pas avec les shells POSIX, comme zsh et bash:

prunille:~> zsh -f
prunille% unset blah
prunille% { echo 1; blah; echo 2; } > /dev/tty
1
2
prunille% echo $blah
17
prunille% ( echo 1; blah=0; echo 2; ) > /dev/tty
1
2
prunille% echo $blah
17
prunille%

prunille:~> sh
sh-2.05b$ unset blah
sh-2.05b$ { echo 1; blah; echo 2; } > /dev/tty
1
2
sh-2.05b$ echo $blah
17
sh-2.05b$ ( echo 1; blah=0; echo 2; ) > /dev/tty
1
2
sh-2.05b$ echo $blah
17
sh-2.05b$

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Olivier Miakinen
Le #755420
Le 21/06/2007 18:09, Vincent Lefevre m'a répondu :

5.12.5 Attention

Quand on redirige ou que l'on pipe [sic] les entrées-sorties ou que l'on
met dans l'arrière plan une telle structure, celle-ci est exécutée dans
un sous-shell. [...]


C'était vrai avec le Bourne shell:
[...]
mais pas avec les shells POSIX, comme zsh et bash:
[...]


Merci pour la précision (et les exemples).


Publicité
Poster une réponse
Anonyme