Problem
Próbowałem wyodrębnić poziom sygnału dla Wi-Fi w następujący sposób, w skrypcie bash (cytaty wydają się nie mieć znaczenia):
string="$(iwconfig wlan0 | grep -I Signal)"
Jeśli echo $string
otrzymam to, czego oczekuję:
Link Quality=63/70 Signal level=-47dBm
Ale jeśli spróbuję uzyskać podłańcuch, echo ${string:5}
zwraca to samo.
Debugowanie:
Jeśli wkleję dane wyjściowe wconfig wlan0 | grep -I Signal
bezpośrednio do zmiennej: string="Link Quality=63/70 Signal level=-47dBm"
wtedy wszystko działa zgodnie z oczekiwaniami.
echo $string
# Link Quality=63/70 Signal level=-47dBm
echo ${string:5}
# Quality=63/70 Signal level=-47dBm
Pytanie: Według Internetu wszystkie zmienne bash są przechowywane jako ciągi znaków. Dlatego wynik debugowania powinien być taki sam jak mój pierwotny problem. Czy istnieje jakiś powód, dla którego nie jest on analizowany jako tekst w pierwotnym problemie?