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
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:
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?
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?