
Tenho que comparar duas variáveis com o ipv6 para que haja strings e números 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
saída: nenhuma
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);
Alguma dica, senhores, sobre como obter a saída desejada? Muito obrigado, felicidades!
Responder1
Seu último exemplo está correto (supondo que você use um shell como bash
ou ksh93
que entenda [[ ... ]]
, mas parece que sim):
if [[ "$ipvsrc" == "$ipvdst" ]]; then
echo "Value OK";
fi
As duas variáveis que você compara contêm strings, portanto, citá-las e usá-las ==
está correto.
A razão pela qual você não está obtendo nenhuma saída provavelmente é simplesmente porque a comparação é avaliada como falsa, ou seja, que as duas strings não são idênticas.
Infelizmente, não conheço o conteúdo de config_{src,dst}
, portanto não posso dizer quais serão os valores das duas variáveis, ou se devem ser iguais ou diferentes um do outro.