Vấn đề
Tôi đã cố gắng trích xuất mức tín hiệu cho wifi theo cách sau, trong một tập lệnh bash (trích dẫn dường như không có sự khác biệt):
string="$(iwconfig wlan0 | grep -I Signal)"
Nếu tôi echo $string
, tôi nhận được những gì tôi mong đợi:
Link Quality=63/70 Signal level=-47dBm
Nhưng nếu tôi cố gắng để có được một chuỗi con echo ${string:5}
, nó sẽ trả về điều tương tự.
Gỡ lỗi:
Nếu tôi dán đầu ra wconfig wlan0 | grep -I Signal
trực tiếp vào biến: string="Link Quality=63/70 Signal level=-47dBm"
thì mọi thứ sẽ hoạt động như mong đợi.
echo $string
# Link Quality=63/70 Signal level=-47dBm
echo ${string:5}
# Quality=63/70 Signal level=-47dBm
Câu hỏi: Theo internet, tất cả các biến bash được lưu dưới dạng chuỗi ký tự. Do đó, kết quả gỡ lỗi nên giống như vấn đề ban đầu của tôi. Có một số lý do nó không được phân tích cú pháp như văn bản trong vấn đề ban đầu?