Como comparar duas variáveis contendo endereços ipv6?

0

Eu tenho que comparar duas variáveis com o ipv6, então existem strings e inteiros juntos.

Eu tentei como abaixo:

if [[ "$ipvsrc" -eq "$ipvdst" ]];
       then echo -e "Value OK";  fi
A saída de erro

foi:

line 7: [[: 2a00: value too great for base (error token is "2a00")

Então:

if [ $ipvsrc -eq $ipvdst];
       then echo -e "Value OK";  fi
A saída de erro

foi:

line 7: [: 2a00:0da9:000a:2010:1fc:0:2174:1951: integer expression expected

Então:

if [[ "$ipvsrc" == "$ipvdst" ]];
       then echo -e "Value OK";
fi

output: none

As variáveis são definidas da seguinte forma:

ipvsrc=$(cat config_src | grep ipvsrc |grep -v localhost | cut -d '=' -f2);

ipvdst=$(cat config_dst | grep -i ipvdst | cut -d '=' -f2);

Quaisquer sugestões para como obter uma saída desejada? Muito obrigado, vivas!

    
por Snıdo Instınto 26.06.2016 / 18:25

1 resposta

1

Seu último exemplo está correto (supondo que você use um shell como bash ou ksh93 que entende [[ ... ]] , mas parece que sim):

if [[ "$ipvsrc" == "$ipvdst" ]]; then
    echo "Value OK";
fi

As duas variáveis que você compara contêm strings, então citá-las e usar == está correto.

A razão pela qual você não está obtendo nenhuma saída é provavelmente simplesmente porque a comparação é avaliada como falsa, isto é, que as duas cadeias não são idênticas.

Infelizmente, não sei o conteúdo de config_{src,dst} , por isso não posso dizer quais são os valores das duas variáveis, ou se devem ser iguais ou diferentes uns dos outros.

    
por 26.06.2016 / 18:38

Tags