Duvida sobre saída debug bash script

1. Duvida sobre saída debug bash script

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 21/02/2014 - 12:46h

Boa tarde pessoal,

estava debugando um código que fiz com o parametro -x para descobrir um bug (está rodando em bash no cygwin), e peguei uma comparação que para mim não faz sentido, esperava um comportamento oposto do que ocorre.

O que ocorre é que fiz um if da seguinte forma


while read linha
do
set -x
linha1=`cat ../robo_dslam/lista.csv | head -1`
if [ $linha != $linha1 ]
then
### Código a ser executado se linha não for cabeçalho ###
fi
done < ../robo_dslam/lista.csv


Fiz esta estrutura dentro de um while que lê um arquivo csv e executa coisas de acordo com os parâmetros passados, e este if deveria simplesmente pular a primeira linha do CSV pois é o cabeçalho do arquivo, o problema é que no resultado do debug, o código considerá a opção abaixo como verdadeira, isto é, considera que linha é diferente de linha1, veja abaixo:


+ '[' 'tipo;nome;ip;svlan;vpls_metro;mesh_sdp' '!=' 'tipo;nome;ip;svlan;vpls_metro;mesh_sdp' ']'


O bash interpreta a saída debugada acima como diferente o conteúdo das variáveis e executa o código dentro do if, deveria interpretar como igual, não fazer nada, e ler a segunda linha (que é o que eu espero, porem não é o que acontece).

No que estou errando?


  


2. Re: Duvida sobre saída debug bash script

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 21/02/2014 - 16:58h

Apenas para registrar, acabei contornando meu problema utilizando case ao invés de if:


while read linha
do
case $linha in
*vpls_metro*) echo 'pulando cabeçalho'
;;
*) ## CODIGO A SER EXECUTADO ##
;;
esac
done < ../robo_dslam/lista.csv


O porém é, ainda fiquei encucado de não ter funcionado conforme o post acima, ainda mais depois do debug feito com aquela saída de resultado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts