
Tengo que comparar dos variables con ipv6 para que haya cadenas y números enteros juntos.
Lo probé de la siguiente manera:
if [[ "$ipvsrc" -eq "$ipvdst" ]];
then echo -e "Value OK"; fi
la salida de error fue:
line 7: [[: 2a00: value too great for base (error token is "2a00")
Entonces:
if [ $ipvsrc -eq $ipvdst];
then echo -e "Value OK"; fi
la salida de error fue:
line 7: [: 2a00:0da9:000a:2010:1fc:0:2174:1951: integer expression expected
Entonces:
if [[ "$ipvsrc" == "$ipvdst" ]];
then echo -e "Value OK";
fi
salida: ninguna
Las variables se establecen de la siguiente manera:
ipvsrc=$(cat config_src | grep ipvsrc |grep -v localhost | cut -d '=' -f2);
ipvdst=$(cat config_dst | grep -i ipvdst | cut -d '=' -f2);
¿Alguna sugerencia, caballeros, sobre cómo obtener el resultado deseado? Muchas gracias saludos!
Respuesta1
Su último ejemplo es correcto (asumiendo que usa un shell como bash
o ksh93
que entiende [[ ... ]]
, pero parece que sí):
if [[ "$ipvsrc" == "$ipvdst" ]]; then
echo "Value OK";
fi
Las dos variables que compara contienen cadenas, por lo que citarlas y usarlas ==
es correcto.
La razón por la que no obtiene ningún resultado probablemente sea simplemente porque la comparación se evalúa como falsa, es decir, que las dos cadenas no son idénticas.
Desafortunadamente, no conozco el contenido de config_{src,dst}
, por lo que no puedo decir cuáles serán los valores probables de las dos variables, o si deberían ser iguales o diferentes entre sí.