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

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

[ Hits: 6.216 ]

 


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

Entendendo o FHS

Diferenças entre os compactadores gzip, bzip2 e xz

Leitura recomendada

Endereço IP como variável

Números aleatórios em shell script

Arrays no BASH

Trabalhando com parâmetros em Shell Script

Como criar a configuração de temas para linguagens no gedit

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts