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.138 ]

 


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

Números aleatórios em shell script

Nome de arquivo com espaço dentro de variáveis

Convertendo Segundos em Horas Usando Bash

Shell Script - Imprimindo nome da própria função em execução

Transforme a manpage do GNU/Linux em PDF

  

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