ปัญหา
ฉันพยายามแยกระดับสัญญาณ wifi ในวิธีต่อไปนี้ในสคริปต์ทุบตี (คำพูดดูเหมือนจะไม่แตกต่างกัน):
string="$(iwconfig wlan0 | grep -I Signal)"
ถ้าฉันecho $string
ฉันได้รับสิ่งที่ฉันคาดหวัง:
Link Quality=63/70 Signal level=-47dBm
แต่ถ้าฉันลองรับสายอักขระย่อยecho ${string:5}
มันจะส่งคืนสิ่งเดียวกัน
debuging:
ถ้าฉันวางผลลัพธ์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
คำถาม:ตามอินเทอร์เน็ตตัวแปรทุบตีทั้งหมดจะถูกเก็บเป็นสตริงอักขระ ดังนั้นผลลัพธ์การดีบักควรเหมือนกันกับปัญหาดั้งเดิมของฉัน มีเหตุผลบางอย่างที่ไม่แยกวิเคราะห์ข้อความในปัญหาดั้งเดิมหรือไม่?