Problem
Ich habe versucht, den Signalpegel für WLAN auf folgende Weise in einem Bash-Skript zu extrahieren (Anführungszeichen scheinen keinen Unterschied zu machen):
string="$(iwconfig wlan0 | grep -I Signal)"
Wenn ich echo $string
bekomme, bekomme ich was ich erwarte:
Link Quality=63/70 Signal level=-47dBm
Aber wenn ich versuche, einen Teilstring zu bekommen echo ${string:5}
, gibt er dasselbe zurück.
Debuggen:
Wenn ich die Ausgabe von wconfig wlan0 | grep -I Signal
direkt in die Variable string="Link Quality=63/70 Signal level=-47dBm"
einfüge, funktioniert alles wie erwartet.
echo $string
# Link Quality=63/70 Signal level=-47dBm
echo ${string:5}
# Quality=63/70 Signal level=-47dBm
Frage: Laut Internet werden alle Bash-Variablen als Zeichenfolgen gespeichert. Daher sollte das Debugging-Ergebnis das gleiche sein wie mein ursprüngliches Problem. Gibt es einen Grund, warum es im ursprünglichen Problem nicht als Text analysiert wird?