Eu tento analisar um arquivo de configuração de texto simples A.conf
com o seguinte conteúdo:
bitrate 500000
use_can 1
Eu quero usar o número atrás bitrate
para configurar uma interface CAN com a taxa de bits apropriada. Aqui está a parte correspondente do meu script de shell:
bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')"
sudo /sbin/ip link set can0 up type can bitrate $bitrate
Funciona bem, se houver pelo menos um caractere de espaço vazio após o número 500000
, mas não se for imediatamente seguido por uma nova linha. Nesse caso, recebo esta saída de erro:
" is wrong: invalid "bitrate" value
Qual é a razão para este comportamento e como posso corrigi-lo? Eu não quero confiar no fato de que cada arquivo de configuração precisa de caracteres de espaço vazio antes de cada nova linha.
Seu arquivo de entrada aparentemente contém um retorno de carro do DOS (ctrl-M, octal
\015
). A solução sã é não usar um editor do Windows em primeiro lugar; uma solução razoável é remover explicitamente esse caractere.Observe também como isso elimina o inútil
cat
e o inútilgrep
.