문제
bash 스크립트에서 다음과 같은 방식으로 wifi의 신호 레벨을 추출하려고 시도했습니다 (따옴표는 아무런 차이가없는 것 같습니다).
string="$(iwconfig wlan0 | grep -I Signal)"
I 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 변수는 문자열로 저장됩니다. 따라서 디버깅 결과는 원래 문제와 동일해야합니다. 원래 문제에서 텍스트로 구문 분석되지 않은 이유가 있습니까?