NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.
le pierre <p.hirth@gmail.com> writes:
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 ?
NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.
Olivier Miakinen
Le 18/06/2007 16:35, Pascal Bourguignon a répondu au pierre :
export LISTE=a b c d e f
export LISTE="a b c d e f"
for i in $LISTE do echo "bonjour" done > ${i}.log
for i in $LISTE do echo "bonjour" > ${i}.log done
D'accord pour la position du « > ${i}.log », mais pas pour celle du « do ».
for i in $LISTE do echo "bonjour" > ${i}.log done
Le 18/06/2007 16:35, Pascal Bourguignon a répondu au pierre :
export LISTE=a b c d e f
export LISTE="a b c d e f"
for i in $LISTE
do
echo "bonjour"
done > ${i}.log
for i in $LISTE do
echo "bonjour" > ${i}.log
done
D'accord pour la position du « > ${i}.log », mais pas pour celle
du « do ».
NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.
Olivier Miakinen <om+news@miakinen.net> writes:
Le 18/06/2007 16:35, Pascal Bourguignon a répondu au pierre :
export LISTE=a b c d e f
export LISTE="a b c d e f"
for i in $LISTE
do
echo "bonjour"
done > ${i}.log
for i in $LISTE do
echo "bonjour" > ${i}.log
done
D'accord pour la position du « > ${i}.log », mais pas pour celle
du « do ».
for i in $LISTE
do
echo "bonjour" > ${i}.log
done
Oui, désolé, j'ai oublié le point-virgule.
for i in $LISTE ; do
echo "bonjour" > ${i}.log
done
NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.
Olivier Miakinen
Oui, désolé, j'ai oublié le point-virgule.
for i in $LISTE ; do echo "bonjour" > ${i}.log done
Oui, là je suis d'accord.
Oui, désolé, j'ai oublié le point-virgule.
for i in $LISTE ; do
echo "bonjour" > ${i}.log
done
for i in $LISTE ; do echo "bonjour" > ${i}.log done
Oui, là je suis d'accord.
le pierre
On 18 juin, 18:21, Olivier Miakinen <om+ wrote:
Oui, désolé, j'ai oublié le point-virgule.
for i in $LISTE ; do echo "bonjour" > ${i}.log done
Oui, là je suis d'accord.
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai placé le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
On 18 juin, 18:21, Olivier Miakinen <om+n...@miakinen.net> wrote:
Oui, désolé, j'ai oublié le point-virgule.
for i in $LISTE ; do
echo "bonjour" > ${i}.log
done
Oui, là je suis d'accord.
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle
for il y a pleins de traitements, et j'esperais rediriger toutes les
sorties de chacun des traitements vers un fichier pour chaque tour de
boucle. C'est pour cela que j'ai placé le > ${i}.log a l'exterieur des
traitements.!!!! n'y a t il pas une solution pour tout rediriger y
compris les erreurs?
for i in $LISTE ; do echo "bonjour" > ${i}.log done
Oui, là je suis d'accord.
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai placé le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Vincent Lefevre
Dans l'article , le pierre écrit:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
Dans l'article <1182190470.725014.31320@o11g2000prd.googlegroups.com>,
le pierre <p.hirth@gmail.com> écrit:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle
for il y a pleins de traitements, et j'esperais rediriger toutes les
sorties de chacun des traitements vers un fichier pour chaque tour de
boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des
traitements.!!!! n'y a t il pas une solution pour tout rediriger y
compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
On 18 juin, 20:35, Vincent Lefevre <vincent+ wrote:
Dans l'article , le pierre écrit:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
On 18 juin, 20:35, Vincent Lefevre <vincent+n...@vinc17.org> wrote:
Dans l'article <1182190470.725014.31...@o11g2000prd.googlegroups.com>,
le pierre <p.hi...@gmail.com> écrit:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle
for il y a pleins de traitements, et j'esperais rediriger toutes les
sorties de chacun des traitements vers un fichier pour chaque tour de
boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des
traitements.!!!! n'y a t il pas une solution pour tout rediriger y
compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
On 18 juin, 20:35, Vincent Lefevre <vincent+ wrote:
Dans l'article , le pierre écrit:
merci, mais en fait j'ai raccourcis mon exemple, mais dans la boucle for il y a pleins de traitements, et j'esperais rediriger toutes les sorties de chacun des traitements vers un fichier pour chaque tour de boucle. C'est pour cela que j'ai plac? le > ${i}.log a l'exterieur des traitements.!!!! n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
[...] n'y a t il pas une solution pour tout rediriger y compris les erreurs?
Tu peux appliquer une redirection à un bloc comme ceci:
{ echo foo echo bar } > fichier
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Et « 2>&1 » pour y rediriger aussi les erreurs.
Il suffit de mettre un tel bloc dans la boucle.
Donc :
for i in $LISTE ; do { echo "bonjour $i" echo "au revoir $i" } > ${i}.log 2>&1 done
Vincent Lefevre
Dans l'article , Olivier Miakinen <om+ écrit:
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnement différent, et les effets secondaires éventuels (e.g. modification de variable ou du répertoire de travail courant) ne seront pas visibles dans le parent. Dans le cas général, l'utilisation des accolades est la solution correcte.
Donc :
for i in $LISTE ; do { echo "bonjour $i" echo "au revoir $i" } > ${i}.log 2>&1 ^^^^^^^^ au cas où: "${i}.log"
Dans l'article <4676f5a8@neottia.net>,
Olivier Miakinen <om+news@miakinen.net> écrit:
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnement
différent, et les effets secondaires éventuels (e.g. modification de
variable ou du répertoire de travail courant) ne seront pas visibles
dans le parent. Dans le cas général, l'utilisation des accolades est
la solution correcte.
Donc :
for i in $LISTE ; do {
echo "bonjour $i"
echo "au revoir $i"
} > ${i}.log 2>&1
^^^^^^^^ au cas où: "${i}.log"
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnement différent, et les effets secondaires éventuels (e.g. modification de variable ou du répertoire de travail courant) ne seront pas visibles dans le parent. Dans le cas général, l'utilisation des accolades est la solution correcte.
Donc :
for i in $LISTE ; do { echo "bonjour $i" echo "au revoir $i" } > ${i}.log 2>&1 ^^^^^^^^ au cas où: "${i}.log"
On 19 juin, 03:57, Vincent Lefevre <vincent+ wrote:
Dans l'article , Olivier Miakinen <om+ écrit:
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnem ent différent, et les effets secondaires éventuels (e.g. modification de variable ou du répertoire de travail courant) ne seront pas visibles dans le parent. Dans le cas général, l'utilisation des accolades est la solution correcte.
Donc : for i in $LISTE ; do { echo "bonjour $i" echo "au revoir $i" } > ${i}.log 2>&1
Quelqu'un peut il me dire pourquoi quand je passe par une variable intermediaire j'ai un decalage :
#! /bin/ksh
export LISTE_HOST="a b c d e"
export VAR for HOST in $LISTE_HOST ; do { VAR=$HOST echo $VAR } > ${VAR}.log #} done
le fichier a.log contient b idem pour b.log qui contient c
pourquoi ?
On 19 juin, 03:57, Vincent Lefevre <vincent+n...@vinc17.org> wrote:
Dans l'article <4676f...@neottia.net>,
Olivier Miakinen <om+n...@miakinen.net> écrit:
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnem ent
différent, et les effets secondaires éventuels (e.g. modification de
variable ou du répertoire de travail courant) ne seront pas visibles
dans le parent. Dans le cas général, l'utilisation des accolades est
la solution correcte.
Donc :
for i in $LISTE ; do {
echo "bonjour $i"
echo "au revoir $i"
} > ${i}.log 2>&1
On 19 juin, 03:57, Vincent Lefevre <vincent+ wrote:
Dans l'article , Olivier Miakinen <om+ écrit:
Tiens ? Je connaissais les parenthèses mais pas les accolades.
Les parenthèses, ça exécute un sous-shell, donc qui a un environnem ent différent, et les effets secondaires éventuels (e.g. modification de variable ou du répertoire de travail courant) ne seront pas visibles dans le parent. Dans le cas général, l'utilisation des accolades est la solution correcte.
Donc : for i in $LISTE ; do { echo "bonjour $i" echo "au revoir $i" } > ${i}.log 2>&1