A.conf
다음을 포함하는 일반 텍스트 구성 파일을 구문 분석하려고 합니다.
bitrate 500000
use_can 1
bitrate
나는 적절한 비트 전송률로 CAN 인터페이스를 설정하기 위해 후자의 숫자를 사용하고 싶습니다 . 내 쉘 스크립트의 해당 부분은 다음과 같습니다.
bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')"
sudo /sbin/ip link set can0 up type can bitrate $bitrate
숫자 뒤에 하나 이상의 공백 문자가 오면 500000
제대로 작동 하지만, 개행 문자가 오면 제대로 작동하지 않습니다. 이 경우 다음과 같은 오류 출력이 나타납니다.
" is wrong: invalid "bitrate" value
이 행동의 이유는 무엇입니까? 어떻게 해결할 수 있나요? 나는 모든 구성 파일의 모든 새 줄 앞에 공백 문자가 필요하다는 사실에 의존하고 싶지 않습니다.
답변1
입력 파일에 DOS 캐리지 리턴(ctrl-M, octal \015
)이 포함되어 있는 것 같습니다. 합리적인 해결책은 처음부터 Windows 편집기를 사용하지 않는 것이 아니라 문자를 명시적으로 제거하는 것입니다.
bitrate="$(tr -d '\015' < /home/pi/A.conf | awk '/bitrate/ {print $2}')"
또한 이것이 쓸모없고 cat
쓸모없는 것을 어떻게 제거하는지 주목하십시오 grep
.