Пакеты повышения вставляются, таким образом, у Вас может на самом деле быть больше чем одна установленная версия.
Для появления что версия просто выйдите:
emerge -a =dev-libs/boost-1.39.0
Если Вы хотите удалить более новую версию (довольно опасный, у Вас могло бы быть много материала, зависящего от нее), Вы могли:
emerge --unmerge =dev-libs/boost-1.46.1-r1
и выполненный a revdep-rebuild
впоследствии.
Для переключения среды от одной версии до другого (если Вы сохранили обоих) использовать eselect boost list/set
.
На самом деле можно установить некоторые атрибуты на переменных с помощью declare
(или старое typeset
) встроенный. declare -i var1 var2
установит целочисленный атрибут на тех переменных. После этого присвоения, которые пытаются установить значения нецелого числа к тем переменным, повысят ошибку.
Но Ваша проблема с синтаксисом. При использовании значения переменной необходимо снабдить префиксом его имя $
:
if [ "$var1" -lt "$var2" ]; then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi
Исключениями являются арифметические оценки, где никакая потребность не для $
:
if ((var1<var2)); then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi
Как слово предупреждения, внутри [
..]
всегда двойная кавычка Ваши переменные для предотвращения расширения слова, портящего синтаксис выражения. (Я имею в виду, у Вас будут проблемы с переменными сброса, переменные, содержащие пустую строку и переменные, содержащие IFS
символы.) Или можно использовать более новое и лучшее [[
..]]
вместо этого, который обрабатывает такие случаи правильно:
if [[ $var1 -lt $var2 ]]; then
echo "$var1 is lt $var2"
else
echo "$var2 is lt $var1"
fi
Необходимо сослаться на переменные, предварительно ожидающие имя с $
if [ $var1 -lt $var2 ] ; then...
"$var1" -lt "$var2"
если у Вас нет очень серьезного основания для того, чтобы не сделать так.
– roaima
10.11.2016, 11:43
[[ $var1 < $var2 ]]
сравнение строк, не арифметическое сравнение...[[ 11 > 2 ]]
тесты как ложь...[[ 11 -gt 2 ]]
тесты как истинный – Peter.O 13.07.2012, 20:24