Problema
Traté de extraer el nivel de señal para wifi de la siguiente manera, en un script bash (las citas parecen no hacer ninguna diferencia):
string="$(iwconfig wlan0 | grep -I Signal)"
Si yo echo $string
, obtengo lo que espero:
Link Quality=63/70 Signal level=-47dBm
Pero si trato de obtener una subcadena, echo ${string:5}
devuelve lo mismo.
Depuración:
Si pego el resultado de wconfig wlan0 | grep -I Signal
directamente en la variable: string="Link Quality=63/70 Signal level=-47dBm"
entonces todo funciona como se esperaba.
echo $string
# Link Quality=63/70 Signal level=-47dBm
echo ${string:5}
# Quality=63/70 Signal level=-47dBm
Pregunta: Según Internet, todas las variables bash se almacenan como cadenas de caracteres. Por lo tanto, el resultado de la depuración debería haber sido el mismo que mi problema original. ¿Hay alguna razón por la que no se analiza como texto en el problema original?