Как сравнить две переменные, содержащие адреса IPv6?

Как сравнить две переменные, содержащие адреса IPv6?

Мне нужно сравнить две переменные с помощью ipv6, чтобы были строки и целые числа вместе.

Я попробовал сделать так, как показано ниже:

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

Вывод ошибки:

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

Затем:

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

Вывод ошибки:

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

Затем:

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

выход: нет

Переменные устанавливаются следующим образом:

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

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

Есть ли у вас какие-нибудь подсказки, как получить желаемый результат? Большое спасибо, ура!

решение1

Ваш последний пример верен (при условии, что вы используете оболочку вроде bashили , ksh93которая понимает [[ ... ]], но, похоже, вы это понимаете):

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

Две сравниваемые вами переменные содержат строки, поэтому заключение их в кавычки и использование ==является правильным.

Причина, по которой вы не получаете никаких выходных данных, вероятно, заключается в том, что сравнение дает результат false, то есть две строки не идентичны.

К сожалению, я не знаю содержимого config_{src,dst}, поэтому не могу сказать, какими могут быть значения этих двух переменных, или должны ли они быть одинаковыми или отличаться друг от друга.

Связанный контент