A.conf
我尝试解析包含以下内容的 纯文本配置文件:
bitrate 500000
use_can 1
我想使用后面的数字bitrate
来设置具有适当比特率的 CAN 接口。这是我的 shell 脚本的相应部分:
bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')"
sudo /sbin/ip link set can0 up type can bitrate $bitrate
如果 number 后面至少有一个空格字符500000
,则它可以正常工作,但如果紧随其后的是换行符,则不行。在这种情况下,我得到以下错误输出:
" is wrong: invalid "bitrate" value
这种行为的原因是什么?我该如何解决它?我不想依赖这样一个事实:每个配置文件在每个新行之前都需要空格字符。
答案1
您的输入文件显然包含 DOS 回车符(ctrl-M,八进制\015
)。明智的解决方案并不是首先不使用 Windows 编辑器;合理的解决方法是显式删除该字符。
bitrate="$(tr -d '\015' < /home/pi/A.conf | awk '/bitrate/ {print $2}')"
还要注意这是如何消除无用cat
和无用的grep
。