J'ai une petite question.
Est-il normal que bash (j'utilise 4.4.11) n'affiche pas les lignes / texte séparés / fin avec plain \r
?
J'ai été un peu surpris de voir ce comportement:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
Mais le texte "bonjour encore" est toujours là, en quelque sorte "caché":
$ echo "$a" |od -w32 -t x1c
0000000 68 65 6c 6c 6f 0d 61 67 61 69 6e 0d 67 65 6f 72 67 65 0d 0a
h e l l o \r a g a i n \r g e o r g e \r \n
Et dès que nous jouons avec bash, c'est bien ... Mais est-ce un risque potentiel pour la sécurité? Et si le contenu de la variable "a" venait du monde extérieur et incluait de "mauvaises commandes" au lieu de juste bonjour?
Un autre test, un peu incertain cette fois:
$ a=$(printf "ls;\rGeorge\n")
$ echo "$a"
George
$ eval "$a"
0 awkprof.out event-tester.log helloworld.c oneshot.sh rightclick-tester.py tmp uinput-simple.py
<directory listing appears with an error message at the end for command George>
Imaginez un caché rm
au lieu d'un caché ls
.
Même comportement lors de l'utilisation d'écho -e:
$ a=$(echo -e "ls;\rGeorge\r\n"); echo "$a"
George
Est-ce moi qui fait quelque chose de mal ...?