проблема
Я попытался извлечь уровень сигнала для Wi-Fi следующим образом, в сценарии bash (кавычки, кажется, не имеют значения):
string="$(iwconfig wlan0 | grep -I Signal)"
Если я echo $string
, я получаю то, что ожидаю:
Link Quality=63/70 Signal level=-47dBm
Но если я пытаюсь получить подстроку echo ${string:5}
, она возвращает то же самое.
отладки:
Если я вставлю вывод wconfig wlan0 | grep -I Signal
непосредственно в переменную: string="Link Quality=63/70 Signal level=-47dBm"
тогда все будет работать как положено.
echo $string
# Link Quality=63/70 Signal level=-47dBm
echo ${string:5}
# Quality=63/70 Signal level=-47dBm
Вопрос: Согласно Интернету, все переменные bash хранятся в виде символьных строк. Таким образом, результат отладки должен был быть таким же, как моя первоначальная проблема. Есть ли какая-то причина, по которой он не анализируется как текст в исходной задаче?