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

 


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

Como exibir números com um largura fixa de caracteres, complentando com zeros a esquerda

Hora no prompt do terminal

Números aleatórios em shell script

Exportar variáveis de um script no mesmo sub-shell

Site com várias dicas de ajuda para shell script

  

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