Bonjour,
Bon, ce formu est ma dernière chance, parce que ça fait trois jours que
je me prend la tête sur un problème de script qui maiche pas mais je
sais pas pourquoi.
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui
s'appelle test.txt, par exemple :
Truc
Bidule
Chose
Le but du script que je cherche à faire est d'attribuer à trois
variables différentes (par exemple a, b et c) chaque ligne de ce fichier.
Pas la peine de se prendre la tête à essayer de trouver une solution
alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre,
c'est pourquoi ma solution ne marche pas et comment la faire marcher
voilà mon script :
cat test.txt | read a b c
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
-- Benoit Izac
Bonjour,
le 27/04/2004 à 17:59, daniel <a.neo@free.fr> a écrit
dans le message <408e834d$0$26994$626a14ce@news.free.fr> :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui
s'appelle test.txt, par exemple :
Truc
Bidule
Chose
Le but du script que je cherche à faire est d'attribuer à trois
variables différentes (par exemple a, b et c) chaque ligne de ce
fichier.
Pas la peine de se prendre la tête à essayer de trouver une solution
alternative, j'en ai déjà une qui marche, ce que je voudrais
comprendre, c'est pourquoi ma solution ne marche pas et comment la
faire marcher
voilà mon script :
cat test.txt | read a b c
selon susv3 :
NAME
read - read a line from standard input
SYNOPSIS
read [-r] var...
DESCRIPTION
The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la
première ligne soit « Truc » va l'affecter à « a » et comme il n'y a
plus rien derrière, « b » et « c » vont rester vides.
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
-- Benoit Izac
Benoit Izac
Dans le message ,
cat test.txt | tr 'n' ' ' | read a b c
D'ailleurs avant que l'on me sorte un UUOC : tr 'n' ' ' < test.txt | read a b c
-- Benoit Izac
Dans le message <8765blxua7@message.id>,
cat test.txt | tr 'n' ' ' | read a b c
D'ailleurs avant que l'on me sorte un UUOC :
tr 'n' ' ' < test.txt | read a b c
D'ailleurs avant que l'on me sorte un UUOC : tr 'n' ' ' < test.txt | read a b c
-- Benoit Izac
daniel
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
oui, je suis tout a fait d'accord ça devrai marcher...mais ça marche pas quand j'essai : la premiere version du script (sans le tr au milieu) la logique voudrait que la premiere ligne soit affectée à "a" mais en fait les trois variables restent vides...lorsqu'on mets le tr au milieu...pareil. Je ne comprend pas du tout pourquoi, bon, ok j'utilise windows et j'ai cygwin comme interpréteur mais ce qui est plus surprenant c'est que j'ai essayé sur les PC de ma fac qui tournent sous linux red hat et que j'obtiens le même résultat...ou plutot l'absence de résultat
selon susv3 :
NAME
read - read a line from standard input
SYNOPSIS
read [-r] var...
DESCRIPTION
The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la
première ligne soit « Truc » va l'affecter à « a » et comme il n'y a
plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
oui, je suis tout a fait d'accord ça devrai marcher...mais ça marche pas
quand j'essai : la premiere version du script (sans le tr au milieu) la
logique voudrait que la premiere ligne soit affectée à "a" mais en fait
les trois variables restent vides...lorsqu'on mets le tr au milieu...pareil.
Je ne comprend pas du tout pourquoi, bon, ok j'utilise windows et j'ai
cygwin comme interpréteur mais ce qui est plus surprenant c'est que j'ai
essayé sur les PC de ma fac qui tournent sous linux red hat et que
j'obtiens le même résultat...ou plutot l'absence de résultat
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
oui, je suis tout a fait d'accord ça devrai marcher...mais ça marche pas quand j'essai : la premiere version du script (sans le tr au milieu) la logique voudrait que la premiere ligne soit affectée à "a" mais en fait les trois variables restent vides...lorsqu'on mets le tr au milieu...pareil. Je ne comprend pas du tout pourquoi, bon, ok j'utilise windows et j'ai cygwin comme interpréteur mais ce qui est plus surprenant c'est que j'ai essayé sur les PC de ma fac qui tournent sous linux red hat et que j'obtiens le même résultat...ou plutot l'absence de résultat
Éric Lévénez
Le 27/04/04 18:25, dans , « Benoit Izac » a écrit :
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 27/04/04 18:25, dans <8765blxua7@message.id>, « Benoit Izac »
<use.reply.to@INVALID.ADDRESS> a écrit :
le 27/04/2004 à 17:59, daniel <a.neo@free.fr> a écrit
dans le message <408e834d$0$26994$626a14ce@news.free.fr> :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui
s'appelle test.txt, par exemple :
Truc
Bidule
Chose
Le but du script que je cherche à faire est d'attribuer à trois
variables différentes (par exemple a, b et c) chaque ligne de ce
fichier.
Pas la peine de se prendre la tête à essayer de trouver une solution
alternative, j'en ai déjà une qui marche, ce que je voudrais
comprendre, c'est pourquoi ma solution ne marche pas et comment la
faire marcher
voilà mon script :
cat test.txt | read a b c
selon susv3 :
NAME
read - read a line from standard input
SYNOPSIS
read [-r] var...
DESCRIPTION
The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la
première ligne soit « Truc » va l'affecter à « a » et comme il n'y a
plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 27/04/04 18:25, dans , « Benoit Izac » a écrit :
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
JustMe
Éric Lévénez wrote:
Le 27/04/04 18:25, dans , « Benoit Izac »
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
allons...
Éric Lévénez wrote:
Le 27/04/04 18:25, dans <8765blxua7@message.id>, « Benoit Izac »
le 27/04/2004 à 17:59, daniel <a.neo@free.fr> a écrit
dans le message <408e834d$0$26994$626a14ce@news.free.fr> :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui
s'appelle test.txt, par exemple :
Truc
Bidule
Chose
Le but du script que je cherche à faire est d'attribuer à trois
variables différentes (par exemple a, b et c) chaque ligne de ce
fichier.
Pas la peine de se prendre la tête à essayer de trouver une solution
alternative, j'en ai déjà une qui marche, ce que je voudrais
comprendre, c'est pourquoi ma solution ne marche pas et comment la
faire marcher
voilà mon script :
cat test.txt | read a b c
selon susv3 :
NAME
read - read a line from standard input
SYNOPSIS
read [-r] var...
DESCRIPTION
The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la
première ligne soit « Truc » va l'affecter à « a » et comme il n'y a
plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va
remonter par magie ?
le 27/04/2004 à 17:59, daniel a écrit dans le message <408e834d$0$26994$ :
Alors voilà, j'ai un fichier qui contient trois lignes de texte,et qui s'appelle test.txt, par exemple : Truc Bidule Chose
Le but du script que je cherche à faire est d'attribuer à trois variables différentes (par exemple a, b et c) chaque ligne de ce fichier. Pas la peine de se prendre la tête à essayer de trouver une solution alternative, j'en ai déjà une qui marche, ce que je voudrais comprendre, c'est pourquoi ma solution ne marche pas et comment la faire marcher voilà mon script : cat test.txt | read a b c
selon susv3 : NAME read - read a line from standard input SYNOPSIS read [-r] var... DESCRIPTION The read utility shall read a single line from standard input.
Comme je suppose que tu n'as pas modifié IFS, ton script va lire la première ligne soit « Truc » va l'affecter à « a » et comme il n'y a plus rien derrière, « b » et « c » vont rester vides.
cat test.txt | tr 'n' ' ' | read a b c
Mais que vient faire ce cat ? C'est souvent une commande forkée en trop.
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
allons...
Éric Lévénez
Le 27/04/04 19:51, dans <c6m6io$a6o$, « JustMe » a écrit :
Éric Lévénez wrote:
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
allons...
Oui ? :->
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 27/04/04 19:51, dans <c6m6io$a6o$1@news-reader5.wanadoo.fr>, « JustMe »
<pasdesp@m.merci> a écrit :
Éric Lévénez wrote:
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va
remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement
aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells
annexes comme tr ou cat...
allons...
Oui ? :->
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 27/04/04 19:51, dans <c6m6io$a6o$, « JustMe » a écrit :
Éric Lévénez wrote:
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
allons...
Oui ? :->
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
JustMe
Éric Lévénez wrote:
Le 27/04/04 19:51, dans <c6m6io$a6o$, « JustMe »
Éric Lévénez wrote:
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
oups... faut que je change de lunettes : j'avais vu des ()
Désolé...
allons...
Oui ? :->
Éric Lévénez wrote:
Le 27/04/04 19:51, dans <c6m6io$a6o$1@news-reader5.wanadoo.fr>, « JustMe »
Éric Lévénez wrote:
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va
remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement
aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells
annexes comme tr ou cat...
oups... faut que je change de lunettes : j'avais vu des ()
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
oups... faut que je change de lunettes : j'avais vu des ()
Désolé...
allons...
Oui ? :->
Stephane Chazelas
2004-04-27, 19:56(+02), Éric Lévénez: [...]
Autre solution :
{ read a; read b; read c; } < test.txt
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
A noter toutefois que dans certains Bourne shells, rediriger un groupe de commande implique que le groupe est lancé dans un sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels shells, de nos jours.
tu assignes une variable dans un subshell et tu esperes qu'elle va
remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement
aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells
annexes comme tr ou cat...
A noter toutefois que dans certains Bourne shells, rediriger un
groupe de commande implique que le groupe est lancé dans un
sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels
shells, de nos jours.
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
A noter toutefois que dans certains Bourne shells, rediriger un groupe de commande implique que le groupe est lancé dans un sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels shells, de nos jours.
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
C'est interessant ces accolades. Je ne connaissais pas. Je vais tester si cela peut résoudre un problème similaire que j'ai avec une donnée présente dans un paramètre.
In article <BCB46B62.70C39%news@levenez.com>, Éric Lévénez wrote:
Le 27/04/04 19:51, dans <c6m6io$a6o$1@news-reader5.wanadoo.fr>, « JustMe »
tu assignes une variable dans un subshell et tu esperes qu'elle va
remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement
aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells
annexes comme tr ou cat...
C'est interessant ces accolades. Je ne connaissais pas. Je vais tester si
cela peut résoudre un problème similaire que j'ai avec une donnée présente
dans un paramètre.
tu assignes une variable dans un subshell et tu esperes qu'elle va remonter par magie ?
Oui, car les accolades indiquent d'utiliser le shell courant, contrairement aux parenthèses. Cette méthode permet aussi de ne pas lancer des shells annexes comme tr ou cat...
C'est interessant ces accolades. Je ne connaissais pas. Je vais tester si cela peut résoudre un problème similaire que j'ai avec une donnée présente dans un paramètre.
Stephane Chazelas
2004-04-27, 20:03(+01), Stephane Chazelas:
A noter toutefois que dans certains Bourne shells, rediriger un groupe de commande implique que le groupe est lancé dans un sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels shells, de nos jours.
A part le /bin/sh de Solaris, ce qui en fait une exception notable.
A noter toutefois que dans certains Bourne shells, rediriger un
groupe de commande implique que le groupe est lancé dans un
sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels
shells, de nos jours.
A part le /bin/sh de Solaris, ce qui en fait une exception
notable.
A noter toutefois que dans certains Bourne shells, rediriger un groupe de commande implique que le groupe est lancé dans un sous-shell. Cela dit, on ne doit plus trouver beaucoup de tels shells, de nos jours.
A part le /bin/sh de Solaris, ce qui en fait une exception notable.