Próbując debugować skrypt, wypisuję zmienne zawierające tekst, całkiem standardowe rzeczy, z wyjątkiem tego, że zmienne nie zachowują się zgodnie z oczekiwaniami. Odkryłem, że jeden z wierszy pliku, który czytam, ma mniej niż 17 znaków, co psuje skrypt, więc testuję mniej niż 17 znaków i próbuję dodać 18 spacji . Dzieje się tak, że spacje są dodawane na początku zmiennej i nadpisują tam litery, a nie na końcu, gdzie spodziewam się, że zostaną dodane. Obliczenie długości pokazuje jednak poprawnie przy 35.
do STR=$line
length=${#STR}
spaces=". ." <<<<18 spaces in here
end=end
if [ $length -le 17 ]
then
TEMPSTR=$STR
echo $TEMPSTR
echo $end
echo $length
TEMPSTR2="$TEMPSTR$spaces"
length=${#TEMPSTR2}
echo $TEMPSTR2
echo $length
fi
czyta w wierszu „Fan Tray (8 spacji)”, tworząc:
Fan Tray
end
17
. . <<< 18 spaces in here
35
Spodziewam się, że pokaże:
Fan Tray
end
17
Fan Tray. . <<< 18 spaces in here
35