Ich habe eine kurze Frage.
Ist es normal, dass bash (ich verwende 4.4.11) keine Zeilen / Texte anzeigt, die getrennt sind / mit Plain enden \r
?
Ich war etwas überrascht, dieses Verhalten zu sehen:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
Aber "Hallo nochmal" Text ist immer noch da, irgendwie "versteckt":
$ 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
Und sobald wir nur mit Bash spielen, ist das in Ordnung ... Aber ist dies ein potenzielles Sicherheitsrisiko? Was ist, wenn der Inhalt der Variablen "a" aus der Außenwelt stammt und "schlechte Befehle" enthält, anstatt nur Hallo?
Ein weiterer Test, diesmal etwas unsicher:
$ 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>
Stellen Sie sich ein verstecktes rm
statt eines versteckten vor ls
.
Gleiches Verhalten bei Verwendung von echo -e:
$ a=$(echo -e "ls;\rGeorge\r\n"); echo "$a"
George
Bin ich es, der etwas falsch macht ...?