Como lidar com variáveis retornadas pelo Expect - removendo CR do fim de linha

Publicado por Carlos A. Parisotto em 22/03/2011

[ Hits: 7.171 ]

 


Como lidar com variáveis retornadas pelo Expect - removendo CR do fim de linha



O Expect é uma ferramenta que trabalha com a interação shell-usuário (pretendo explicar com mais detalhes em um artigo). É uma ferramenta sensacional, mas logo que comecei a trabalhar com ela me deparei com o seguinte problema:

A codificação do expect retorna dois caracteres de fim de linha: <CR> e <LF>, sendo assim eu não consegui fazer comparações com as variáveis. Por exemplo:

valor=`expect script.exp`
echo $valor

>>5

O script retornou o valor 5.

if [ `echo $valor` == "5" ];then
echo igual
else
echo diferente
fi

>>diferente

Tive que usar o `echo $valor`, pois o retorno é em texto e não em valor numérico. Mesmo a variável $valor estando igual a 5, o if não consegue comparar corretamente.

A solução encontrada para isso foi remover o caractere <CR> do fim da linha com o TR:

if [ `echo $valor | tr -d '\r' ` == "5" ];then
echo igual
else
echo diferente
fi

>>igual

Essa foi a ideia que tive para fazer funcionar, que serviu para o Expect, mas que pode servir para outros casos. Se alguém teve algum caso semelhante, com uma resolução diferente, podem postar aí.

Abraço.

Outras dicas deste autor

Diferenças entre os compactadores gzip, bzip2 e xz

Entendendo o FHS

Leitura recomendada

Iniciando Script com o Sistema - Configuração no Debian Wheezy

Truques para tratamento de variáveis em shell script

Atendimento ou suporte remoto em estações de trabalho via VNC

Verificar saída de comando. Será que meu comando deu erro?

Economize energia, um bem precioso

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts