Le doute m'habite...
8<------8<------8<------8<------8<------8<------8<------8<------8<------
toto='1 A
2
3
4'
echo "$toto" | while IFS="\n" read i
do
echo -e "${i}\n---"
done
8<------8<------8<------8<------8<------8<------8<------8<------8<------
1. Ça marche mais est-ce une façon correcte, portable et minimale de
lire une chaîne ligne à ligne ?
2. Quelle explication donneriez-vous sur le fait quand mettant
echo $toto à la place de echo "$toto" cela ne donne pas le résultat
escompté.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas George
Ph. Ivaldi wrote in message :
1. Ça marche mais est-ce une façon correcte, portable et minimale de lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin d'être fiable.
2. Quelle explication donneriez-vous sur le fait quand mettant echo $toto à la place de echo "$toto" cela ne donne pas le résultat escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en plusieurs arguments ; echo affiche les différents arguments séparés à chaque fois par un caractère espace.
Ph. Ivaldi wrote in message <87k4yx6i05.fsf@tele2.fr>:
1. Ça marche mais est-ce une façon correcte, portable et minimale de
lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin
d'être fiable.
2. Quelle explication donneriez-vous sur le fait quand mettant
echo $toto à la place de echo "$toto" cela ne donne pas le résultat
escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en
plusieurs arguments ; echo affiche les différents arguments séparés à chaque
fois par un caractère espace.
1. Ça marche mais est-ce une façon correcte, portable et minimale de lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin d'être fiable.
2. Quelle explication donneriez-vous sur le fait quand mettant echo $toto à la place de echo "$toto" cela ne donne pas le résultat escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en plusieurs arguments ; echo affiche les différents arguments séparés à chaque fois par un caractère espace.
Ph. Ivaldi
Le 14 octobre 2009, Nicolas George écrivit :
Ph. Ivaldi wrote in message :
1. Ça marche mais est-ce une façon correcte, portable et minimale de lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin d'être fiable.
printf alors ?
2. Quelle explication donneriez-vous sur le fait quand mettant echo $toto à la place de echo "$toto" cela ne donne pas le résultat escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en plusieurs arguments ; echo affiche les différents arguments séparés à chaque fois par un caractère espace.
Apparemment il redécoupe aussi sur le retour à la ligne, sinon on devrait avoir un « 2: command not found ». Il y a un truc qui m'échappe...
Je pose cette question car j'ai rencontré ce problème 8<------8<------8<------8<------8<------8<------8<------8<------8<------ toto='1 2 3 4'
echo "$toto" | tr "n" "@"
echo
foo="$(echo "$toto" | tr "n" "@")" echo $foo 8<------8<------8<------8<------8<------8<------8<------8<------8<------ donne @@ "1 2 3 4"@
alors que je m'attendais à deux fois @@...
Je viens seulement maintenant de découvrir que c'est dû à l'interpréteur $() qui n'est pas équivalent à `` foo="`echo "$toto" | tr "n" "@"`" donne bien @@
Il me semble pourtant avoir lu qu'il valait mieux maintenant utiliser $(). Quelles différences y-a-t-il exactement entre $() et `` ? -- Philippe Ivaldi. http://www.piprime.fr/
Le 14 octobre 2009, Nicolas George écrivit :
Ph. Ivaldi wrote in message <87k4yx6i05.fsf@tele2.fr>:
1. Ça marche mais est-ce une façon correcte, portable et minimale de
lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin
d'être fiable.
printf alors ?
2. Quelle explication donneriez-vous sur le fait quand mettant
echo $toto à la place de echo "$toto" cela ne donne pas le résultat
escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en
plusieurs arguments ; echo affiche les différents arguments séparés à chaque
fois par un caractère espace.
Apparemment il redécoupe aussi sur le retour à la ligne, sinon on
devrait avoir un « 2: command not found ». Il y a un truc qui
m'échappe...
Je pose cette question car j'ai rencontré ce problème
8<------8<------8<------8<------8<------8<------8<------8<------8<------
toto='1
2
3
4'
Je viens seulement maintenant de découvrir que c'est dû à l'interpréteur
$() qui n'est pas équivalent à ``
foo="`echo "$toto" | tr "\n" "@"`"
donne bien 1@2@3@4@
Il me semble pourtant avoir lu qu'il valait mieux maintenant utiliser
$().
Quelles différences y-a-t-il exactement entre $() et `` ?
--
Philippe Ivaldi.
http://www.piprime.fr/
1. Ça marche mais est-ce une façon correcte, portable et minimale de lire une chaîne ligne à ligne ?
Non, puisque ça table sur le comportement de la commande echo, qui est loin d'être fiable.
printf alors ?
2. Quelle explication donneriez-vous sur le fait quand mettant echo $toto à la place de echo "$toto" cela ne donne pas le résultat escompté.
Sans les guillemets, $toto est redécoupé sur les blancs et passé à echo en plusieurs arguments ; echo affiche les différents arguments séparés à chaque fois par un caractère espace.
Apparemment il redécoupe aussi sur le retour à la ligne, sinon on devrait avoir un « 2: command not found ». Il y a un truc qui m'échappe...
Je pose cette question car j'ai rencontré ce problème 8<------8<------8<------8<------8<------8<------8<------8<------8<------ toto='1 2 3 4'
echo "$toto" | tr "n" "@"
echo
foo="$(echo "$toto" | tr "n" "@")" echo $foo 8<------8<------8<------8<------8<------8<------8<------8<------8<------ donne @@ "1 2 3 4"@
alors que je m'attendais à deux fois @@...
Je viens seulement maintenant de découvrir que c'est dû à l'interpréteur $() qui n'est pas équivalent à `` foo="`echo "$toto" | tr "n" "@"`" donne bien @@
Il me semble pourtant avoir lu qu'il valait mieux maintenant utiliser $(). Quelles différences y-a-t-il exactement entre $() et `` ? -- Philippe Ivaldi. http://www.piprime.fr/
Nicolas George
Ph. Ivaldi wrote in message :
Apparemment il redécoupe aussi sur le retour à la ligne
Le retour à la ligne est un blanc.
Quelles différences y-a-t-il exactement entre $() et `` ?
Avec $(), c'est moins le cauchemar pour l'échappement.
Ph. Ivaldi wrote in message <87fx9l6dwf.fsf@tele2.fr>:
Apparemment il redécoupe aussi sur le retour à la ligne
Le retour à la ligne est un blanc.
Quelles différences y-a-t-il exactement entre $() et `` ?
Avec $(), c'est moins le cauchemar pour l'échappement.