Kısa bir sorum var.
Bash'ın (4.4.11 kullanıyorum) düz / ayrılmış / sonlu satır / metin görüntülememesi normal \r
mi?
Bu davranışı görmek biraz şaşırdı:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
Ama "tekrar merhaba" metni hala orada, bir şekilde "gizli":
$ 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
Ve bash ile oynadığımızda sorun yok ... Ama bu potansiyel bir güvenlik riski midir? "A" değişkeninin içeriği dış dünyadan geliyorsa ve sadece merhaba yerine "kötü komutlar" içeriyorsa ne olur?
Başka bir test, bu sefer biraz güvensiz:
$ 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>
Bir gizli rm
yerine bir gizli düşünün ls
.
Echo -e kullanırken aynı davranış:
$ a=$(echo -e "ls;\rGeorge\r\n"); echo "$a"
George
Yanlış bir şey yapan ben miyim ...?